{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "64bab834",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams[\"font.sans-serif\"] = \"SimHei\" #解决中文乱码问题\n",
    "import seaborn as sns\n",
    "import random\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn import model_selection\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "54c7387b",
   "metadata": {},
   "outputs": [],
   "source": [
    "#缺失值查看预处理\n",
    "df_train = pd.read_csv('train_format1.csv')\n",
    "df_test = pd.read_csv('test_format1.csv')\n",
    "user_info = pd.read_csv('user_info_format1.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c89f7eee",
   "metadata": {},
   "outputs": [],
   "source": [
    "user_log = pd.read_csv('user_log_format1.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "28b93136",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(261477, 3) (260864, 3)\n",
      "(424170, 3) (54925330, 7)\n"
     ]
    }
   ],
   "source": [
    "print(df_test.shape,df_train.shape)\n",
    "print(user_info.shape,user_log.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c8955932",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 424170 entries, 0 to 424169\n",
      "Data columns (total 3 columns):\n",
      " #   Column     Non-Null Count   Dtype  \n",
      "---  ------     --------------   -----  \n",
      " 0   user_id    424170 non-null  int64  \n",
      " 1   age_range  421953 non-null  float64\n",
      " 2   gender     417734 non-null  float64\n",
      "dtypes: float64(2), int64(1)\n",
      "memory usage: 9.7 MB\n"
     ]
    }
   ],
   "source": [
    "user_info.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "94bdc0dc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>376517</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>234512</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>344532</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>186135</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>30230</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>272389</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>281071</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>139859</td>\n",
       "      <td>7.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>198411</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>67037</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  age_range  gender\n",
       "0   376517        6.0     1.0\n",
       "1   234512        5.0     0.0\n",
       "2   344532        5.0     0.0\n",
       "3   186135        5.0     0.0\n",
       "4    30230        5.0     0.0\n",
       "5   272389        6.0     1.0\n",
       "6   281071        4.0     0.0\n",
       "7   139859        7.0     0.0\n",
       "8   198411        5.0     1.0\n",
       "9    67037        4.0     1.0"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_info.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "31da19c3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 424170 entries, 0 to 424169\n",
      "Data columns (total 3 columns):\n",
      " #   Column     Non-Null Count   Dtype  \n",
      "---  ------     --------------   -----  \n",
      " 0   user_id    424170 non-null  int64  \n",
      " 1   age_range  329039 non-null  float64\n",
      " 2   gender     407308 non-null  float64\n",
      "dtypes: float64(2), int64(1)\n",
      "memory usage: 9.7 MB\n"
     ]
    }
   ],
   "source": [
    "user_info['age_range'].replace(0.0,np.nan,inplace=True)\n",
    "user_info['gender'].replace(2.0,np.nan,inplace=True)\n",
    "user_info.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "167b67f1",
   "metadata": {},
   "outputs": [],
   "source": [
    "user_info['age_range'].replace(np.nan,-1,inplace=True)\n",
    "user_info['gender'].replace(np.nan,-1,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "3dbfca71",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '用户年龄分布')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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8/K5z30ub37zm3PxxRfnvvvuy0/+5E/OamAzMR8A6GLluqtn9fU2X3zqHu+zePHiLFu2bJeyHTt25NBDD811112Xu+66K1u2bMntt9+egw8+OIsWLcpDDz2UJDnggJmNZRkJAwD2Wzt27Mh99923S9n27duzbdu2vO1tb8stt9ySI444Iu9///tz66235qSTTsqKFStm5SsUhTAAYL9100035Ytf/OIuZYsWLcrmzZvzhje8IStWrMiWLVvyxS9+MRdddFEuvfTSvPzlL8/xxx8/4/cWwgCA/dL27dtzzz335M4778xdd931vfIHH3ww559/fh544IGcc845ef3rX58nP/nJ2bRpU77+9a9n1apVs/L+5oQBAPul9773vTnjjDPylKc8JevWrcsHP/jBJMntt9+ec889N1/72tdyww035Prrr89tt92W0047LUmydu3aWXl/IQx4VLM9cba3cSbuAgvP3/zN3+STn/xk1q9fn0WLFuWKK67Ie97znpx99tl53vOel5e//OXZsGFD1q5dm2c+85lZsmRJjjvuuFx11VU577zzZqUOTkcCAPuVj3zkI3n1q1+dT3ziE1m0aFGS5Morr8xHP/rRnHHGGfnmN7+Zs846Ky94wQty4YUX5sYbb8xtt92Wr3zlK3nc4x6XL33pS7NSDyNhAEAXPUamb7nlllx11VX5zGc+k8MPP/x75Yceemg++9nP5q1vfWtuvfXWnH322Vm1alU2bNiQm266Ka985Svzzne+M0ceeWRe9rKX5Y/+6I/y9Kc/fUZ1qdbaTNuzT61evbrNxmWhwPQ4HQnMlptvvjnPeMYzeldjWh588MEsXjwaq2qt5aGHHvreqFlrbcqvKZqqfVW1qbW2eqr3cDoSAGCSnQEsGX0v5M4AtnN5NghhAMA+M9/OwE3XOO0SwgCAfWLp0qXZtm3bggtirbVs27YtS5cu3aP9TMwHAPaJFStW5I477sjWrVt7V2XWLV26NCtWrNijfYQwAGCfWLJkSY4++uje1ZgznI4EAOhACAMA6EAIAwDoQAgDAOhACAMA6EAIAwDoQAgDAOhACAMA6EAIAwDoQAgDAOhACAMA6EAIAwDoQAgDAOhACAMA6EAIAwDoQAgDAOhACAMA6EAIAwDoQAgDAOhACAMA6EAIAwDoYFohrKqOrKr1E5Yvr6rrqurcvVUGALCQPWYIq6rDknw4ycHD8mlJFrXWTkiyqqqOme2yvdNUAIC5YzojYd9NcnqSe4flNUk+Njy/JsmJe6FsF1V1ZlVtrKqNW7dunUaVAQDmtscMYa21e1tr2ycUHZzkzuH53UmO3Atlk+twWWttdWtt9fLly6fXMgCAOWycifk7khw0PF82vMZslwEALGjjBJ5NefiU4bFJNu+FMgCABW3xGPtclWR9VR2VZG2S5yZps1wGALCgTXskrLW2Zvj33owm029IcnJrbftsl81KywAA5rBxRsLSWvt2Hr6ica+UAQAsZCbBAwB0IIQBAHQghAEAdCCEAQB0IIQBAHQghAEAdCCEAQB0MNZ9wvYHK9dd3bsKs2rzxaf2rgIAMIGRMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAO9jiEVdVhVfUXVbWxqi4dyi6vquuq6twJ241dBgCw0I0zEnZGkj9sra1OckhVvSnJotbaCUlWVdUxVXXauGWz1C4AgDlt8Rj7bEvyI1X1hCQ/kGR7ko8N665JcmKSZ8+g7Gtj1AkAYF4ZJ4R9IcmpSV6X5OYkBya5c1h3d5Ljkhw8g7JHqKozk5yZJE996lPHqDLA+Fauu7p3FWbV5otP7V0FIOOdjjw/yVmttbckuSXJv09y0LBu2fCaO2ZQ9gittctaa6tba6uXL18+RpUBAOaWcULYYUmeVVWLkjwnycUZnUZMkmOTbE6yaQZlAAAL3jinI9+W5IokT0tyXZLfT7K+qo5KsjbJc5O0GZQBACx4ezwS1lr73621Z7bWlrXWTmmt3ZtkTZINSU5urW2fSdlsNAoAYK4bZyTsEVpr387DVznOuAwAYKFzx3wAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADmYUwqrqkqp6yfD88qq6rqrOnbB+7DIAgIVs7BBWVT+e5Emttf9ZVaclWdRaOyHJqqo6ZiZls9AuAIA5bawQVlVLkvxBks1V9dNJ1iT52LD6miQnzrAMAGBBG3ck7BeT3JTkHUmOT/KaJHcO6+5OcmSSg2dQtouqOrOqNlbVxq1bt45ZZQCAuWPcEPbsJJe11rYk+e9JPp/koGHdsuF1d8ygbBettctaa6tba6uXL18+ZpUBAOaOcUPYrUlWDc9XJ1mZh08jHptkc5JNMygDAFjQFo+53+VJPlhVr0iyJKN5XX9eVUclWZvkuUlakvVjlgEALGhjjYS11u5rrf1ca+2k1toJrbXbMwpiG5Kc3Frb3lq7d9yymTYKAGCuG3ck7BFaa9/Ow1c5zrgMAGAhc8d8AIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA6EMACADoQwAIAOhDAAgA4W964AzGUr113duwqzavPFp/auAgADI2EAAB0IYQAAHQhhAAAdCGEAAB0IYQAAHQhhAAAdCGEAAB0IYQAAHQhhAAAdCGEAAB0IYQAAHQhhAAAdCGEAAB0IYQAAHQhhAAAdCGEAAB0IYQAAHQhhAAAdCGEAAB0IYQAAHQhhAAAdCGEAAB0IYQAAHQhhAAAdCGEAAB0IYQAAHQhhAAAdCGEAAB0IYQAAHQhhAAAdCGEAAB0IYQAAHSwed8eqOjLJp1prz66qy5P8cJKrW2sXDuvHLgNgblm57ureVZhVmy8+tXcVYEYjYe9MclBVnZZkUWvthCSrquqYmZTNtEEAAPPBWCGsqp6f5B+SbEmyJsnHhlXXJDlxhmVTvd+ZVbWxqjZu3bp1nCoDAMwpexzCqurAJL+dZN1QdHCSO4fndyc5coZlj9Bau6y1trq1tnr58uV7WmUAgDlnnJGwdUkuaa3dMyzvSHLQ8HzZ8JozKQMAWPDGCT0vTPKaqro2yY8meUkePo14bJLNSTbNoAwAYMHb46sjW2sn7Xw+BLGXJllfVUclWZvkuUnaDMoAABa8GZ3+a62taa3dm9EE+w1JTm6tbZ9J2UzqAwAwX4x9n7CJWmvfzsNXOc64DABgoTMRHgCgAyEMAKADIQwAoAMhDACgAyEMAKADIQwAoINZuUUFACx0K9dd3bsKs2rzxaf2rsJ+z0gYAEAHQhgAQAdCGABAB0IYAEAHQhgAQAdCGABAB0IYAEAHQhgAQAdCGABAB0IYAEAHQhgAQAdCGABAB0IYAEAHQhgAQAdCGABAB0IYAEAHQhgAQAdCGABAB0IYAEAHQhgAQAdCGABAB0IYAEAHQhgAQAdCGABAB0IYAEAHQhgAQAdCGABAB0IYAEAHQhgAQAdCGABAB0IYAEAHQhgAQAdCGABAB0IYAEAHQhgAQAdCGABAB0IYAEAHQhgAQAdCGABAB2OFsKp6fFV9sqquqao/raoDq+ryqrquqs6dsN3YZQAAC9m4I2E/n+T3WmsvSrIlySuSLGqtnZBkVVUdU1WnjVs282YBAMxti8fZqbV2yYTF5Ul+Icm7h+VrkpyY5NlJPjZm2dfGqRcAwHwxozlhVXVCksOSfCPJnUPx3UmOTHLwDMomv8+ZVbWxqjZu3bp1JlUGAJgTxg5hVfXEJO9L8stJdiQ5aFi1bHjdmZTtorV2WWttdWtt9fLly8etMgDAnDHuxPwDk3w8yW+21m5Psimj04hJcmySzTMsAwBY0MaaE5bkVUmOS/LmqnpzkiuSnFFVRyVZm+S5SVqS9WOWAQAsaGONhLXW/mtr7bDW2prh8eEka5JsSHJya217a+3ecctm2igAgLlu3JGwR2itfTsPX+U44zIAgIXMHfMBADoQwgAAOhDCAAA6EMIAADoQwgAAOhDCAAA6EMIAADoQwgAAOhDCAAA6EMIAADoQwgAAOhDCAAA6EMIAADoQwgAAOhDCAAA6EMIAADoQwgAAOhDCAAA6EMIAADoQwgAAOhDCAAA6EMIAADoQwgAAOhDCAAA6EMIAADoQwgAAOhDCAAA6WNy7AgDA/LBy3dW9qzCrNl98atf3NxIGANCBEAYA0IEQBgDQgRAGANCBEAYA0IEQBgDQgRAGANCBEAYA0IEQBgDQgRAGANCBEAYA0IEQBgDQgRAGANCBEAYA0IEQBgDQgRAGANCBEAYA0IEQBgDQgRAGANDBnAlhVXV5VV1XVef2rgsAwN42J0JYVZ2WZFFr7YQkq6rqmN51AgDYm+ZECEuyJsnHhufXJDmxX1UAAPa+aq31rkOq6vIk722t3VBVL0pyXGvt4gnrz0xy5rD4L5J8tUM195YjknyrdyU60wf6INEHiT5I9EGiD5KF1QdPa60tn2rF4n1dk93YkeSg4fmyTBqha61dluSyfV2pfaGqNrbWVveuR0/6QB8k+iDRB4k+SPRBsv/0wVw5HbkpD5+CPDbJ5n5VAQDY++bKSNhVSdZX1VFJ1iZ5bt/qAADsXXNiJKy1dm9Gk/M3JDm5tba9b432qQV5mnUP6QN9kOiDRB8k+iDRB8l+0gdzYmI+AMD+Zk6MhLH/qKojq+r5vesB+0pVPbGqTqmqI/bFfnORPmCnqvqpqnp873rMFULYXlJVH6qqtw7Pf2dYPnHC8i9MLJu034K8T1pVPSnJu5JcP4Sx9RPWHVZVf1FVG6vq0n61nD0T2zjd9lXV46vqk1V1TVX9aVUdOOn1vrwv6j4bpmpLVX29qq4dHs/ag/2Orqqrq2p9Vb1rX7dlXFV1WJL/leT4JJ+rquXT+XaQqfabsG6+HQdT9cF0joOp9puXx0Gy6+e2J98QM2m/edv+CW5I8v6qesLuNqiqxVMdIwvxm3WEsL3rP1bV0t6VmAuGiy7ekeS1SVqSDyc5eMImZyT5w+GS5EOqal5fmjz8ApnYxum27+eT/F5r7UVJtiR58YR178zDt3KZDya3ZV2SP26trRkefzfN/V6c5O1JLmit/XiSFVW1Zq/Xfnb8qyTntNYuSvKXSZ6f6X07yOT9jpuwbr4dB5Pb8suZ3nEwVR/M1+MgGT632vNviJn4ec/n9idJWmt3Jvn1JO8d/ji9dELYuraqzsvos9/lGBmj3+aFuXJ15EJ1Y0a/UPZrVfWUJBcleW1r7d6qOjTJ6Un+bMJm25L8yPDX0Q8k+cY+r+js+m52beO02tdau2TC4vIkdyVJjU7h/kNGoWRemKIt30jyb6rq5CR/l+RXW2sPTmO/u5L8UJIvDWV3JZkXpzNaa3+VJFV1UkYjOk/MI78d5GvT2O8tw/J8PA4mt+UTmd5xMFUfvD3z8DiY9LmtyTSOgSn2S+bp/4PJWmtbquqNSd6d5PWttbsnrq+qV2fSMZI96Lf5xEjY3vVfMjp49ndrknxpuAo2rbV7p7gC9gtJnpbkdUluTnJ35rEp2viI9u3mL8AkSVWdkOSw1tqG4ZTkb2c0kjTv7GxLkk8neWFr7fgkS5L81HT7IKNf3OdX1UsyGhn7zL5vyXiqqjIK5N/OaBT4zmHV3UmO3F0fTNrvgfl8HExqy5czzeNgch9kHh4HU3xuB2cax8BuPu951/7daa3dleTvM/Utqf5PJh0jmaLf9kU99zYjYXvXliS3ZBRCbpu0br+5LLW19odV9UtV9Z9aa+/bzWbnJzlrGCk7J8krs7AuUX5E+1prUwb0qnpikvcl+dmhaF2SS1pr94x+J80fk9qypbX2nWHVxiTHTLcPWmsX1miu5K8n+XBrbcder/wsaaNL0F9TVRckeVmSPxhWLUtywO76YNJ+L83oK9vm5XEwqS1HtdZ2zgd91ONgch/M0+Ng8v/fR3xDzFTtH4LoLp/3PG3/lIZ5XTck+emqetOEVZ9N8vbJPyvyGN+sM18tiEbMcb+f5CeSfDPJqqFsVebR6YTZ0Fr7cJJvTfrPNtFhSZ5VVYuSPCcLL6ROq33DX78fT/KbrbXbh+IXZvSL6NokP1pVH9gH9Z2xKdpyZVUdO/TBz2T0A3g6++10fZKnJvm9vVnv2VRVv1FVvzgsPiHJxZnGt4NMsd89mb/HweS2/LdpHgdT9UEy/46DXT63JC/J9L4hZnef9/WZX+1/hBpdtPbl1tpVrbVfnTD3a01r7S2Z+mfFwvxmndaax154JPlQkhOH59cOy3+dZH1G57UPGMpuySjpb0xy2lRlvdsyy/1yWpJX7OyXCeXHJ/lKRn/tfDrJst51naX2Xrsn7Uvyaxmderl2eJw+1evNh8cUbTk/yd9mNMfjoj3Y7/Sh/HeTnNG7XXvYBztPw34+ySUZzeG5IaNfoDcnefw096t5fBxMbsuzpnkcTNkH8/E4mPi5JTl0OsfA7j7v+dz+of5nJTnlMbb5kcnHyDj9Nh8ebtYKsA8NV86ekuTzrbX9akScEcfAeBZivwlhAAAdmBMGANCBEAYA0IEQBgDQgRAGANCBEAYA0IEQBgDQwf8H8cDUaF56b1sAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize = (10, 6))\n",
    "x = np.array([\"NULL\",\"<18\",\"18-24\",\"25-29\",\"30-34\",\"35-39\",\"40-49\",\">=50\"])\n",
    "#<18岁为1；[18,24]为2； [25,29]为3； [30,34]为4；[35,39]为5；[40,49]为6； > = 50时为7和8\n",
    "y = np.array([user_info[user_info['age_range'] == -1]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 1]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 2]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 3]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 4]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 5]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 6]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 7]['age_range'].count() + user_info[user_info['age_range'] == 8]['age_range'].count()])\n",
    "plt.bar(x,y,label='人数')\n",
    "plt.legend()\n",
    "plt.title('用户年龄分布')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "025f44d8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '用户年龄分布')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x = 'age_range', order = [-1,1,2,3,4,5,6,7,8], data = user_info)\n",
    "plt.title('用户年龄分布')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "f3a7055c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '用户性别分布')"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x='gender',order = [-1,0,1],data = user_info)\n",
    "plt.title('用户性别分布')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "e717d3ee",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '用户性别年龄分布')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x = 'age_range', order = [-1,1,2,3,4,5,6,7,8],hue= 'gender',data = user_info)\n",
    "plt.title('用户性别年龄分布')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "06cbc72f",
   "metadata": {},
   "outputs": [],
   "source": [
    "#年纪的缺省值不少，性别的缺省值倒是不多。\n",
    "#用户年纪主要分布在18-34岁，且主要为女性。\n",
    "#缺失值处理的话，先简单处理一下，把缺失值都做删除处理吧，\n",
    "#后面继续尝试的话可以试试填充缺失值\n",
    "#后来又注释掉了，没有删，因为这里是原始数据，应该在建立好特征之后再删吧\n",
    "user_info['age_range'].replace(-1,np.nan,inplace=True)\n",
    "user_info['gender'].replace(-1,np.nan,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "bec2f9d0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '用户性别年龄分布')"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x = 'age_range', order = [-1,1,2,3,4,5,6,7,8],hue= 'gender',data = user_info)\n",
    "plt.title('用户性别年龄分布')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "cc13b9b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>cat_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>brand_id</th>\n",
       "      <th>time_stamp</th>\n",
       "      <th>action_type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>328862</td>\n",
       "      <td>323294</td>\n",
       "      <td>833</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>328862</td>\n",
       "      <td>844400</td>\n",
       "      <td>1271</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>328862</td>\n",
       "      <td>575153</td>\n",
       "      <td>1271</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>328862</td>\n",
       "      <td>996875</td>\n",
       "      <td>1271</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>328862</td>\n",
       "      <td>1086186</td>\n",
       "      <td>1271</td>\n",
       "      <td>1253</td>\n",
       "      <td>1049.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  item_id  cat_id  seller_id  brand_id  time_stamp  action_type\n",
       "0   328862   323294     833       2882    2661.0         829            0\n",
       "1   328862   844400    1271       2882    2661.0         829            0\n",
       "2   328862   575153    1271       2882    2661.0         829            0\n",
       "3   328862   996875    1271       2882    2661.0         829            0\n",
       "4   328862  1086186    1271       1253    1049.0         829            0"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_log.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "baf497d2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id            0\n",
       "item_id            0\n",
       "cat_id             0\n",
       "seller_id          0\n",
       "brand_id       91015\n",
       "time_stamp         0\n",
       "action_type        0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_log.isnull().sum(axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "5bba95f9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 54925330 entries, 0 to 54925329\n",
      "Data columns (total 7 columns):\n",
      " #   Column       Dtype  \n",
      "---  ------       -----  \n",
      " 0   user_id      int64  \n",
      " 1   item_id      int64  \n",
      " 2   cat_id       int64  \n",
      " 3   seller_id    int64  \n",
      " 4   brand_id     float64\n",
      " 5   time_stamp   int64  \n",
      " 6   action_type  int64  \n",
      "dtypes: float64(1), int64(6)\n",
      "memory usage: 2.9 GB\n"
     ]
    }
   ],
   "source": [
    "user_log.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "a61cb669",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "#初步可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "92ea88b7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>362112</td>\n",
       "      <td>2618</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>34944</td>\n",
       "      <td>2051</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>231552</td>\n",
       "      <td>3828</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>231552</td>\n",
       "      <td>2124</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>232320</td>\n",
       "      <td>1168</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label\n",
       "0    34176         3906      0\n",
       "1    34176          121      0\n",
       "2    34176         4356      1\n",
       "3    34176         2217      0\n",
       "4   230784         4818      0\n",
       "5   362112         2618      0\n",
       "6    34944         2051      0\n",
       "7   231552         3828      1\n",
       "8   231552         2124      0\n",
       "9   232320         1168      0"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "#user_log前面几行全是编码，购物者的唯一ID编码，\n",
    "#商品的唯一编码，商品所属品类的唯一编码，\n",
    "#商家的唯一ID编码，商品品牌的唯一编码\n",
    "#后面是购买时间，与活动日志记录\n",
    "df_train.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "cab1e6c9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 260864 entries, 0 to 260863\n",
      "Data columns (total 3 columns):\n",
      " #   Column       Non-Null Count   Dtype\n",
      "---  ------       --------------   -----\n",
      " 0   user_id      260864 non-null  int64\n",
      " 1   merchant_id  260864 non-null  int64\n",
      " 2   label        260864 non-null  int64\n",
      "dtypes: int64(3)\n",
      "memory usage: 6.0 MB\n"
     ]
    }
   ],
   "source": [
    "df_train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "38ba6a75",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAEACAYAAAC57G0KAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAUxUlEQVR4nO3df4hd553f8fcnUgyqplEdkt422na9BnUhdCxiT7Y22OUOjZM4m7KuA7GJSDGkKJs19B/RJtkYFlzTpmbtBYeuiIJibLXx4BjidbFjErM7WAvKD6nYnmzaZVtQ3Ajby9bGYlwTUPj2j7lqxqM7c89Ic0f3Pn6/YODc5zzn3OfrO/r4zHPOuSdVhSSpPe+63AOQJI2HAS9JjTLgJalRBrwkNcqAl6RGGfCS1KiJC/gkvSTHN1j/hSSLg5/nk3x9O8cnSdMik3QdfJIrgUeBv1tV13bo/zXg4ao6OfbBSdKUmbQj+F8CtwNnAZL8rSSPJ3kuyX9a3THJXqBnuEvScBMV8FV1tqreWNV0EPhJVf1T4O8nuWbVuruAw9s6QEmaIhMV8EP8JvAvkiwCVwN7AZK8C5gHFi/byCRpwu283AMY4S+BH1XVQ0k+Cbw0aL8J+GFN0gkESZowk34E/w3gliTPAb8L/O9B+8eA5y7bqCRpCkzUVTSSpK0z6UfwkqSLNDFz8O973/vqqquuGtnvzTffZPfu3eMf0Ji1UgdYyyRqpQ6wllFOnTr1N1X1/mHrJibgr7rqKk6eHH1J++LiIv1+f/wDGrNW6gBrmUSt1AHWMkqSn623zikaSWqUAS9JjTLgJalRBrwkNcqAl6RGGfCS1CgDXpIaZcBLUqMMeElq1MTcySpJ2+2qLz21re93aPYcdw55z9Nf/e2xvJ9H8JLUKANekhplwEtSo0YGfJI9Sb6b5HtJvpPkinX6HU1yIsndG7VJkrZHlyP4A8ADVfVR4BXg42s7JLkN2FFVNwBXJ9k3rG0rBy5J2timHtmX5HHgD6vqB2vaHwSeqaqnk9wB7AI+tLatqh5as91B4CBAr9e7bmFhYeQYlpeXmZmZ6TzmSdVKHWAtk6iVOmC8tSydeWMs+11Pbxe8+taF7bN791z0Pufn509V1dywdZ0vk0xyA3Dl2nAf2A2cGSy/Bly7TtvbVNUR4AjA3Nxcdfki/Fa+/L+VOsBaJlErdcB4axl2yeI4HZo9x/1LF8bu6QP9sbxfp4BP8l7ga8Cn1umyzMpRO8AMK1M/w9okSduky0nWK4BvA1+uqvUeDXUKuHGwvB84vU6bJGmbdDmC/xwr0ytfSfIV4M+Ad1fV6itjngCOJ/kAcAtwPVBD2iRJ22RkwFfVYeDwiD5nk/SBm4H7quoNgGFtkqTtsWXfRVNVrwOPjWqTJG0PT3xKUqMMeElqlAEvSY0y4CWpUQa8JDXKgJekRhnwktQoA16SGmXAS1KjDHhJapQBL0mNMuAlqVEGvCQ1yoCXpEYZ8JLUqE4Bn6SX5PgG67+QZHHw83ySryfZmeSlVe2zWzdsSdIoIx/4keRK4GFg93p9Vj/1KcnXBv2vAR6tqi9uzVAlSZvR5Qj+l8DtwNlRHZPsBXpVdZKVZ7B+MsmPkhxNsmVPj5IkjZaq6tYxWayq/og+/x74flX9WZIPAz+vqpeTPAI8XlVPrul/EDgI0Ov1rltYWBg5juXlZWZmZjqNeZK1UgdYyyRqpQ4Yby1LZ7b3UdG9XfDqWxe2z+7dc9H7nJ+fP1VVc8PWbdlRdZJ3AfPAVwZNL1bVLwbLJ4F9a7epqiPAEYC5ubnq9/sj32dxcZEu/SZdK3WAtUyiVuqA8dZy55eeGst+13No9hz3L10Yu6cP9Mfyflt5Fc1NwA/rV38SHEuyP8kO4FbghS18L0nSCJsO+CQfTHLvkFUfA55b9foe4BjwPHCiqp69qBFKki5K5yma8/PvVfVT4O4h639/zeufsHIljSTpMvBGJ0lqlAEvSY0y4CWpUQa8JDXKgJekRhnwktQoA16SGmXAS1KjDHhJapQBL0mNMuAlqVEGvCQ1yoCXpEYZ8JLUKANekhplwEtSowx4SWqUAS9JjeoU8El6SY5vsH5nkpeSLA5+ZgftR5OcSHLBI/4kSeM1MuCTXAk8DOzeoNs1wKNV1R/8LCW5DdhRVTcAVyfZtzVDliR1karauEPyHiDAn5x/8PaQPr8H3AW8CSwBnwceAJ6pqqeT3AHsqqqH1mx3EDgI0Ov1rltYWBg54OXlZWZmZkb2m3St1AHWMolaqQPGW8vSmTfGst/19HbBq29d2D67d89F73N+fv5UVc0NW7dz1MZVdRYgyUbdfgx8pKpeTvII8AlWjvjPDNa/Blw7ZN9HgCMAc3Nz1e/3Rw2HxcVFuvSbdK3UAdYyiVqpA8Zby51femos+13Podlz3L90YeyePtAfy/uNDPiOXqyqXwyWTwL7gGVg16BtBk/oStK22qrQPZZkf5IdwK3AC8Ap4MbB+v3A6S16L0lSB5s+gk/yQeAzVbX6yph7gG+xMlf/ZFU9O5i7P57kA8AtwPVbMWBJUjedA/78Cdaq+ilw95p1P2HlSprVbWeT9IGbgfuqanvPZkjSO9xWzcEPVVWvA4+N8z0kScN54lOSGmXAS1KjDHhJapQBL0mNMuAlqVEGvCQ1yoCXpEYZ8JLUKANekhplwEtSowx4SWqUAS9JjTLgJalRBrwkNcqAl6RGdQr4JL0kxzdYvyfJd5N8L8l3klyRZGeSl5IsDn5mt27YkqRRRgZ8kiuBh4HdG3Q7ADxQVR8FXgE+zsoTnh6tqv7gZ2krBixJ6qbLEfwvgduBs+t1qKo/rqrvD16+H/hrVp7B+skkP0pyNMlYnx4lSXq7VFW3jsni+eeybtDnBuDeqvpnST4M/LyqXk7yCPB4VT25pv9B4CBAr9e7bmFhYeQ4lpeXmZmZ6TTmSdZKHWAtk6iVOmC8tSyd2d5HRfd2watvXdg+u3fPRe9zfn7+VFXNDVu3ZUfVSd4LfA341KDpxar6xWD5JLBv7TZVdQQ4AjA3N1f9fn/k+ywuLtKl36RrpQ6wlknUSh0w3lru/NJTY9nveg7NnuP+pQtj9/SB/ljeb0uuoklyBfBt4MtV9bNB87Ek+5PsAG4FXtiK95IkdbPpgE/ywST3rmn+HHAt8JXBFTO3A/cAx4DngRNV9eylDlaS1F3nKZrz8+9V9VPg7jXrDgOHh2x2zaUMTpJ08bzRSZIaZcBLUqMMeElqlAEvSY0y4CWpUQa8JDXKgJekRhnwktQoA16SGmXAS1KjDHhJapQBL0mNMuAlqVEGvCQ1yoCXpEYZ8JLUKANekhplwEtSozoFfJJekuMj+hxNciLJ3Ru1SZK2x8iAT3Il8DCwe4M+twE7quoG4Ook+4a1bdWgJUmjpao27pC8BwjwJ+cfvD2kz4PAM1X1dJI7gF3Ah9a2VdVDa7Y7CBwE6PV61y0sLIwc8PLyMjMzMyP7TbpW6gBrmUSt1AHjrWXpzBtj2e96ervg1bcubJ/du+ei9zk/P3+qquaGrds5auOqOguQZKNuu4Ezg+XXgGvXaVu77yPAEYC5ubnq9/ujhsPi4iJd+k26VuoAa5lErdQB463lzi89NZb9rufQ7DnuX7owdk8f6I/l/bbqJOsyK0ftADOD/Q5rkyRtk60K3VPAjYPl/cDpddokSdtk5BTNWkk+CHymqlZfGfMEcDzJB4BbgOuBGtImSdomnY/gz59graqfrgn38/P0feAHwHxVvTGsbYvGLEnqYNNH8OupqteBx0a1SZK2hyc+JalRBrwkNcqAl6RGGfCS1CgDXpIaZcBLUqO27DJJSerqqk18B8yh2XPb/p0xrfAIXpIaZcBLUqMMeElqlAEvSY0y4CWpUQa8JDXKgJekRhnwktQoA16SGtUp4JMcTXIiyd3rrP9CksXBz/NJvp5kZ5KXVrXPbu3QJUkbGRnwSW4DdlTVDcDVSfat7VNVh6uqP3is33HgG8A1wKPn26tqaYvHLknaQKpq4w7Jg8AzVfV0kjuAXVX10Dp99wJ/VFWfTvJ7wF3Am8AS8PmqOrem/0HgIECv17tuYWFh5ICXl5eZmZkZXdmEa6UOsJZJNOl1LJ3p/ojm3i549a0xDmYbrVfL7N49F73P+fn5U1U1N2xdly8b2w2cGSy/Bly7Qd+7gMOD5R8DH6mql5M8AnwCeHJ156o6AhwBmJubq36/P3Iwi4uLdOk36VqpA6xlEk16HZv58rBDs+e4f6mN70Vcr5bTB/pjeb8uc/DLwK7B8sx62yR5FzAPLA6aXqyqlwfLJ4ELpnYkSePTJeBPATcOlvcDp9fpdxPww/rVnM+xJPuT7ABuBV64hHFKkjapS8A/AXw2yQPAp4G/SHLvkH4fA55b9foe4BjwPHCiqp69tKFKkjZj5MRWVZ1N0gduBu6rqlcYcjReVb+/5vVPWLmSRpJ0GXQ6c1FVrwOPjXkskqQt5J2sktQoA16SGmXAS1KjDHhJapQBL0mNauP+3wlx1SZvv97M7dqbcfqrvz2W/UqaLh7BS1KjDHhJapQBL0mNMuAlqVEGvCQ1yoCXpEYZ8JLUKANekhplwEtSowx4SWpUp4BPcjTJiSR3r7N+Z5KXkiwOfma7bCdJGp+R30WT5DZgR1XdkOSbSfZV1V+t6XYN8GhVfXGT20lj53cE6Z2qyxF8n189ru97wI1D+lwPfDLJjwZH7Ts7bidJGpNU1cYdkqPAg1X1QpKPAtdW1VfX9Pkw8POqejnJI8DjwO902O4gcBCg1+tdt7CwMHLAy8vLzMzMdK9wGy2deaNz394uePWt8Yxjdu+e8ex4HZP8mcA783PxM5lM69VyKb8b8/Pzp6pqbti6Ll8XvAzsGizPMPyo/8Wq+sVg+SSwr8t2VXUEOAIwNzdX/X5/5GAWFxfp0u9y2Myf9odmz3H/0ni+rfn0gf5Y9rueSf5M4J35ufiZTKb1ahnX70aXKZpT/Gp6ZT9wekifY0n2J9kB3Aq80HE7SdKYdPnf4hPA8SQfAG4B7khyb1WtvjLmHuBbQIAnq+rZJO9Zs931Wzt0SdJGRgZ8VZ1N0gduBu6rqldYOUJf3ecnrFxJs9F23SfdJEmXrNPEVlW9zq+uiOnsYreTJF0672SVpEYZ8JLUKANekhplwEtSo9q4e0BSJ5v5Xh5NP4/gJalRBrwkNcqAl6RGGfCS1CgDXpIaZcBLUqMMeElqlNfBa2y85lq6vDyCl6RGGfCS1CgDXpIa1cQcvHO9knShTkfwSY4mOZHk7nXW70ny3STfS/KdJFck2ZnkpSSLg5/ZrR26JGkjI4/gk9wG7KiqG5J8M8m+qvqrNd0OAA9U1feTHAY+DvwceLSqvrj1w5amz3b+pXlo9hx3+pftO16qauMOyYPAM1X1dJI7gF1V9dAG/R8H/hC4FrgLeBNYAj5fVefW9D0IHATo9XrXLSwsjBzw8vIyMzMzb2tbOjN9z/Pu7YJX3xrPvmf37hnPjtcx7DMBP5fLqZU64J1Ry6X8m52fnz9VVXPD1nWZg98NnBksv8ZKcA+V5Abgyqr6QZJfAh+pqpeTPAJ8Anhydf+qOgIcAZibm6t+vz9yMIuLi6ztN41HKodmz3H/0nhOgZw+0B/Lftcz7DMBP5fLqZU64J1Ry7j+zXb5r7YM7Bosz7DOvH2S9wJfAz41aHqxqn4xWD4J7LuEcUqSNqnLSdZTwI2D5f3A6bUdklwBfBv4clX9bNB8LMn+JDuAW4EXLnm0kqTOugT8E8BnkzwAfBr4iyT3runzOVambr4yuGLmduAe4BjwPHCiqp7dslFLkkYaOUVTVWeT9IGbgfuq6hXWHI1X1WHg8JDNr9mCMUqSLkKnMxdV9Trw2JjHIknaQn5VgSQ1qo1rj/Q22/3VDd5UI00mj+AlqVEGvCQ1yoCXpEYZ8JLUKANekhplwEtSowx4SWqUAS9JjTLgJalRBrwkNcqAl6RGGfCS1CgDXpIaZcBLUqM6BXySo0lOJLl7M326bCdJGo+RAZ/kNmBHVd0AXJ1kX5c+XbaTJI1PqmrjDsmDwDNV9XSSO4BdVfXQqD7AhzpsdxA4OHj5m8Bfdhjz+4C/6dBv0rVSB1jLJGqlDrCWUX69qt4/bEWXJzrtBs4Mll8Dru3YZ+R2VXUEONJhDP9fkpNVNbeZbSZRK3WAtUyiVuoAa7kUXebgl1k5IgeYWWebYX26bCdJGpMuoXsKuHGwvB843bFPl+0kSWPSZYrmCeB4kg8AtwB3JLm3qu7eoM/1QA1p2wqbmtKZYK3UAdYyiVqpA6zloo08yQqQ5ErgZuC5qnqla58u20mSxqNTwEuSpo8nPiWpURMZ8El2JnkpyeLgZ3aa75RN8sdJ/vlgeSrrSPKFVZ/H80m+PsW1XJnk6SQnk3x90DZ1tST5jSRPJTme5P5B2zTW0UtyfNXrTjVMYl1Dannb60HbttUykQEPXAM8WlX9quoD+5jSO2WT3AT8var6r9N8x29VHV71eRwH/hdTWgvwWeC/DK5H/ttJ/i3TWct/BP5dVd0E/No0/n4NztM9zMp9M53vip/EuobU8rbXg7ZtrWVSA/564JNJfpTkKPAR4LHBuu+xcvllf0jbREnybuAbwOkkv8PwMQ9rm1hJ9gI94NeY3lr+D/CPk/wd4B8Av8F01vKPgP82WP5r4H6mr45fArcDZwev+3SrYVjb5ba2lrWvYZtrmdSA/zHwkar6LeDdrFxmufqu2B4X3inb2+5BdvAvgZ8C9wG/BdzFdNax2l3AYYaPe1pq+XPg14F/Dfx34Aqms5bHgT8YTP99HPhTpqyOqjpbVW+saur6ezVxda2tZUhtsM21TGrAv1hVLw+WT7Ly/Q3TeKfsh4Ajg0tE/zPwHNNZBwBJ3gXMA4tM993LfwD8blXdA/wP4DNMYS1VdS/wXeBfsTIVMM2fyXlda5i2us7b1lom9T/KsST7k+wAbmXlqHEa75T9n8DVg+U54Cqms47zbgJ+WCvX1k7z3ctXArOD369/AnyV6a3leeAfAg8w3Z/JeV1rmLa6ztvWWrrcyXo53AN8CwjwJNt7p+xWOgp8MyvfpvluVubanpzCOs77GCt/hcD0fiYA/wF4iJVpmhPAHzG9tfwb4IGq+r9JnmB66zjvCbrVMG11nfcE21jL1NzolEbulG2lDrCWSdRCHV1rmLa6ztvOWqYm4CVJmzOpc/CSpEtkwEtSowx4SWqUAS9JjTLgJalR/w/Iif/cZtHh5AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "user_log['time_stamp'].hist(bins = 9)\n",
    "##618和双十一购买的东西最多"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "78cf19a3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='action_type', ylabel='count'>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x = 'action_type', order = [0,1,2,3],data = user_log)\n",
    "#绝大多数都是单击，加入购物车的动作很少，比购买和收藏的动作还要少"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "24a5d966",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>231552</td>\n",
       "      <td>3828</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>306816</td>\n",
       "      <td>1489</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57</th>\n",
       "      <td>176256</td>\n",
       "      <td>3323</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>59</th>\n",
       "      <td>307584</td>\n",
       "      <td>1340</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260747</th>\n",
       "      <td>208511</td>\n",
       "      <td>2592</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260793</th>\n",
       "      <td>87935</td>\n",
       "      <td>1964</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260794</th>\n",
       "      <td>87935</td>\n",
       "      <td>3734</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260799</th>\n",
       "      <td>350591</td>\n",
       "      <td>4394</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260842</th>\n",
       "      <td>422783</td>\n",
       "      <td>2026</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>15952 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        user_id  merchant_id  label\n",
       "2         34176         4356      1\n",
       "7        231552         3828      1\n",
       "53       306816         1489      1\n",
       "57       176256         3323      1\n",
       "59       307584         1340      1\n",
       "...         ...          ...    ...\n",
       "260747   208511         2592      1\n",
       "260793    87935         1964      1\n",
       "260794    87935         3734      1\n",
       "260799   350591         4394      1\n",
       "260842   422783         2026      1\n",
       "\n",
       "[15952 rows x 3 columns]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#特征工程\n",
    "df_train[df_train['label'] == 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "3aaf4d71",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>cat_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>brand_id</th>\n",
       "      <th>time_stamp</th>\n",
       "      <th>action_type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>35905644</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1110</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905646</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1110</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905672</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1110</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905696</th>\n",
       "      <td>34176</td>\n",
       "      <td>718096</td>\n",
       "      <td>1142</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1031</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905720</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1031</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905791</th>\n",
       "      <td>34176</td>\n",
       "      <td>613698</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1021</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905804</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1108</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905824</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1029</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905830</th>\n",
       "      <td>34176</td>\n",
       "      <td>1093165</td>\n",
       "      <td>1397</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905831</th>\n",
       "      <td>34176</td>\n",
       "      <td>898580</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905832</th>\n",
       "      <td>34176</td>\n",
       "      <td>569051</td>\n",
       "      <td>1577</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905834</th>\n",
       "      <td>34176</td>\n",
       "      <td>185202</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905876</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1111</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905886</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1111</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905895</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1111</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905900</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1111</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905960</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1107</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905966</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1107</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905995</th>\n",
       "      <td>34176</td>\n",
       "      <td>965699</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905996</th>\n",
       "      <td>34176</td>\n",
       "      <td>187402</td>\n",
       "      <td>1577</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905999</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906001</th>\n",
       "      <td>34176</td>\n",
       "      <td>569051</td>\n",
       "      <td>1577</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906005</th>\n",
       "      <td>34176</td>\n",
       "      <td>702940</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906007</th>\n",
       "      <td>34176</td>\n",
       "      <td>832131</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906008</th>\n",
       "      <td>34176</td>\n",
       "      <td>48054</td>\n",
       "      <td>302</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906009</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906011</th>\n",
       "      <td>34176</td>\n",
       "      <td>320263</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906012</th>\n",
       "      <td>34176</td>\n",
       "      <td>468438</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906013</th>\n",
       "      <td>34176</td>\n",
       "      <td>963534</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906014</th>\n",
       "      <td>34176</td>\n",
       "      <td>613698</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906016</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906017</th>\n",
       "      <td>34176</td>\n",
       "      <td>963534</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906020</th>\n",
       "      <td>34176</td>\n",
       "      <td>157439</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906021</th>\n",
       "      <td>34176</td>\n",
       "      <td>475546</td>\n",
       "      <td>1397</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906023</th>\n",
       "      <td>34176</td>\n",
       "      <td>246109</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906025</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906026</th>\n",
       "      <td>34176</td>\n",
       "      <td>523545</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906027</th>\n",
       "      <td>34176</td>\n",
       "      <td>198962</td>\n",
       "      <td>1577</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906085</th>\n",
       "      <td>34176</td>\n",
       "      <td>613698</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1020</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          user_id  item_id  cat_id  seller_id  brand_id  time_stamp  \\\n",
       "35905644    34176   757713     821       3906    6268.0        1110   \n",
       "35905646    34176   757713     821       3906    6268.0        1110   \n",
       "35905672    34176   757713     821       3906    6268.0        1110   \n",
       "35905696    34176   718096    1142       3906    6268.0        1031   \n",
       "35905720    34176   757713     821       3906    6268.0        1031   \n",
       "35905791    34176   613698     821       3906    6268.0        1021   \n",
       "35905804    34176   757713     821       3906    6268.0        1108   \n",
       "35905824    34176   757713     821       3906    6268.0        1029   \n",
       "35905830    34176  1093165    1397       3906    6268.0        1027   \n",
       "35905831    34176   898580     662       3906    6268.0        1027   \n",
       "35905832    34176   569051    1577       3906    6268.0        1027   \n",
       "35905834    34176   185202     821       3906    6268.0        1027   \n",
       "35905876    34176   757713     821       3906    6268.0        1111   \n",
       "35905886    34176   757713     821       3906    6268.0        1111   \n",
       "35905895    34176   757713     821       3906    6268.0        1111   \n",
       "35905900    34176   757713     821       3906    6268.0        1111   \n",
       "35905960    34176   757713     821       3906    6268.0        1107   \n",
       "35905966    34176   757713     821       3906    6268.0        1107   \n",
       "35905995    34176   965699     662       3906    6268.0        1027   \n",
       "35905996    34176   187402    1577       3906    6268.0        1027   \n",
       "35905999    34176   757713     821       3906    6268.0        1027   \n",
       "35906001    34176   569051    1577       3906    6268.0        1027   \n",
       "35906005    34176   702940     662       3906    6268.0        1027   \n",
       "35906007    34176   832131     662       3906    6268.0        1027   \n",
       "35906008    34176    48054     302       3906    6268.0        1027   \n",
       "35906009    34176   757713     821       3906    6268.0        1027   \n",
       "35906011    34176   320263     662       3906    6268.0        1027   \n",
       "35906012    34176   468438     821       3906    6268.0        1027   \n",
       "35906013    34176   963534     821       3906    6268.0        1027   \n",
       "35906014    34176   613698     821       3906    6268.0        1027   \n",
       "35906016    34176   757713     821       3906    6268.0        1027   \n",
       "35906017    34176   963534     821       3906    6268.0        1027   \n",
       "35906020    34176   157439     662       3906    6268.0        1027   \n",
       "35906021    34176   475546    1397       3906    6268.0        1027   \n",
       "35906023    34176   246109     821       3906    6268.0        1027   \n",
       "35906025    34176   757713     821       3906    6268.0        1027   \n",
       "35906026    34176   523545     662       3906    6268.0        1027   \n",
       "35906027    34176   198962    1577       3906    6268.0        1027   \n",
       "35906085    34176   613698     821       3906    6268.0        1020   \n",
       "\n",
       "          action_type  \n",
       "35905644            0  \n",
       "35905646            0  \n",
       "35905672            0  \n",
       "35905696            3  \n",
       "35905720            3  \n",
       "35905791            0  \n",
       "35905804            0  \n",
       "35905824            0  \n",
       "35905830            0  \n",
       "35905831            0  \n",
       "35905832            0  \n",
       "35905834            0  \n",
       "35905876            2  \n",
       "35905886            0  \n",
       "35905895            0  \n",
       "35905900            0  \n",
       "35905960            0  \n",
       "35905966            0  \n",
       "35905995            0  \n",
       "35905996            0  \n",
       "35905999            0  \n",
       "35906001            0  \n",
       "35906005            0  \n",
       "35906007            0  \n",
       "35906008            0  \n",
       "35906009            0  \n",
       "35906011            0  \n",
       "35906012            0  \n",
       "35906013            0  \n",
       "35906014            0  \n",
       "35906016            0  \n",
       "35906017            0  \n",
       "35906020            0  \n",
       "35906021            0  \n",
       "35906023            0  \n",
       "35906025            0  \n",
       "35906026            0  \n",
       "35906027            0  \n",
       "35906085            0  "
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_log[(user_log['user_id'] == 34176) & (user_log['seller_id'] == 3906)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "0a77f49f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label\n",
       "0    34176         3906      0\n",
       "1    34176          121      0\n",
       "2    34176         4356      1\n",
       "3    34176         2217      0\n",
       "4   230784         4818      0"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#想要建立的特征\n",
    "#需要根据user_id，和merchant_id（seller_id）,从用户画像表以及用户日志表中提取特征，\n",
    "#填写到df_train这个数据框中，从而训练评估模型 需要建立的特征如下：\n",
    "#用户的年龄(age_range)\n",
    "#用户的性别(gender)\n",
    "#某用户在该商家日志的总条数(total_logs)\n",
    "#用户浏览商品的数目,就是浏览多少个商品(uniq_item_ids)\n",
    "#用户浏览的商品的种类的数目,就是浏览了多少种商品(categories)\n",
    "#用户浏览天数(browse_days)\n",
    "#用户单击的次数(one_clicks)\n",
    "#用户添加购物车的次数(shopping_carts)\n",
    "#用户购买的次数(purchase_times)\n",
    "#用户收藏的次数(favourite_times)\n",
    "df_train.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "bb320084",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>376517</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>234512</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>344532</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>186135</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>30230</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  age_range  gender\n",
       "0   376517        6.0     1.0\n",
       "1   234512        5.0     0.0\n",
       "2   344532        5.0     0.0\n",
       "3   186135        5.0     0.0\n",
       "4    30230        5.0     0.0"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_info.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "43320bc9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>cat_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>brand_id</th>\n",
       "      <th>time_stamp</th>\n",
       "      <th>action_type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>328862</td>\n",
       "      <td>323294</td>\n",
       "      <td>833</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>328862</td>\n",
       "      <td>844400</td>\n",
       "      <td>1271</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>328862</td>\n",
       "      <td>575153</td>\n",
       "      <td>1271</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>328862</td>\n",
       "      <td>996875</td>\n",
       "      <td>1271</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>328862</td>\n",
       "      <td>1086186</td>\n",
       "      <td>1271</td>\n",
       "      <td>1253</td>\n",
       "      <td>1049.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  item_id  cat_id  seller_id  brand_id  time_stamp  action_type\n",
       "0   328862   323294     833       2882    2661.0         829            0\n",
       "1   328862   844400    1271       2882    2661.0         829            0\n",
       "2   328862   575153    1271       2882    2661.0         829            0\n",
       "3   328862   996875    1271       2882    2661.0         829            0\n",
       "4   328862  1086186    1271       1253    1049.0         829            0"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_log.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "12e207b9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label  age_range  gender\n",
       "0    34176         3906      0        6.0     0.0\n",
       "1    34176          121      0        6.0     0.0\n",
       "2    34176         4356      1        6.0     0.0\n",
       "3    34176         2217      0        6.0     0.0\n",
       "4   230784         4818      0        NaN     0.0"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#age_range,gender特征添加\n",
    "df_train = pd.merge(df_train,user_info,on=\"user_id\",how=\"left\")\n",
    "df_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "e9c9734c",
   "metadata": {},
   "outputs": [],
   "source": [
    "#total_logs特征添加\n",
    "total_logs_temp = user_log.groupby([user_log[\"user_id\"],user_log[\"seller_id\"]]).count().reset_index()[[\"user_id\",\"seller_id\",\"item_id\"]]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "06d09cc9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>item_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  item_id\n",
       "0        1        471        1\n",
       "1        1        739        1\n",
       "2        1        925        4\n",
       "3        1       1019       14\n",
       "4        1       1156        1\n",
       "5        1       2245        5\n",
       "6        1       4026        5\n",
       "7        1       4177        1\n",
       "8        1       4335        1\n",
       "9        2        420       26"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "total_logs_temp.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "84371111",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>total_logs</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  total_logs\n",
       "0        1          471           1\n",
       "1        1          739           1\n",
       "2        1          925           4\n",
       "3        1         1019          14\n",
       "4        1         1156           1"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "total_logs_temp.rename(columns={\"seller_id\":\"merchant_id\",\"item_id\":\"total_logs\"},inplace=True)\n",
    "total_logs_temp.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "dc250e89",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label  age_range  gender  total_logs\n",
       "0    34176         3906      0        6.0     0.0          39\n",
       "1    34176          121      0        6.0     0.0          14\n",
       "2    34176         4356      1        6.0     0.0          18\n",
       "3    34176         2217      0        6.0     0.0           2\n",
       "4   230784         4818      0        NaN     0.0           8"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train = pd.merge(df_train,total_logs_temp,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n",
    "df_train.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "775d768f",
   "metadata": {},
   "outputs": [],
   "source": [
    "#unique_item_ids特征添加\n",
    "unique_item_ids_temp = user_log.groupby([user_log[\"user_id\"],user_log[\"seller_id\"],user_log[\"item_id\"]]).count().reset_index()[[\"user_id\",\"seller_id\",\"item_id\"]]\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "00a731c3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>item_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>638653</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>556107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>504149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1110495</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>896183</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>181459</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>452837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>543397</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>779078</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>112203</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  item_id\n",
       "0        1        471   638653\n",
       "1        1        739   556107\n",
       "2        1        925   504149\n",
       "3        1       1019  1110495\n",
       "4        1       1156   896183\n",
       "5        1       2245   181459\n",
       "6        1       2245   452837\n",
       "7        1       2245   543397\n",
       "8        1       2245   779078\n",
       "9        1       4026   112203"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unique_item_ids_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "71fa4f53",
   "metadata": {},
   "outputs": [],
   "source": [
    "unique_item_ids_temp1 = unique_item_ids_temp.groupby([unique_item_ids_temp[\"user_id\"],unique_item_ids_temp[\"seller_id\"]]).count().reset_index()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "5fd80959",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>item_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  item_id\n",
       "0        1        471        1\n",
       "1        1        739        1\n",
       "2        1        925        1\n",
       "3        1       1019        1\n",
       "4        1       1156        1\n",
       "5        1       2245        4\n",
       "6        1       4026        1\n",
       "7        1       4177        1\n",
       "8        1       4335        1\n",
       "9        2        420       15"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unique_item_ids_temp1.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "c47957e7",
   "metadata": {},
   "outputs": [],
   "source": [
    "unique_item_ids_temp1.rename(columns={\"seller_id\":\"merchant_id\",\"item_id\":\"unique_item_ids\"},inplace=True)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "c12126bb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>unique_item_ids</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  unique_item_ids\n",
       "0        1          471                1\n",
       "1        1          739                1\n",
       "2        1          925                1\n",
       "3        1         1019                1\n",
       "4        1         1156                1\n",
       "5        1         2245                4\n",
       "6        1         4026                1\n",
       "7        1         4177                1\n",
       "8        1         4335                1\n",
       "9        2          420               15"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unique_item_ids_temp1.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "26ddb9a0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label  age_range  gender  total_logs  unique_item_ids\n",
       "0    34176         3906      0        6.0     0.0          39               20\n",
       "1    34176          121      0        6.0     0.0          14                1\n",
       "2    34176         4356      1        6.0     0.0          18                2\n",
       "3    34176         2217      0        6.0     0.0           2                1\n",
       "4   230784         4818      0        NaN     0.0           8                1"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train = pd.merge(df_train,unique_item_ids_temp1,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n",
    "df_train.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "fbfcd513",
   "metadata": {},
   "outputs": [],
   "source": [
    "#categories特征构建\n",
    "categories_temp = user_log.groupby([user_log[\"user_id\"],user_log[\"seller_id\"],user_log[\"cat_id\"]]).count().reset_index()[[\"user_id\",\"seller_id\",\"cat_id\"]]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "2f161b42",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>cat_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>389</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>992</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1256</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>276</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>389</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>602</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>1213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>2</td>\n",
       "      <td>1179</td>\n",
       "      <td>500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>2</td>\n",
       "      <td>1544</td>\n",
       "      <td>737</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>2</td>\n",
       "      <td>1679</td>\n",
       "      <td>1130</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>2</td>\n",
       "      <td>1784</td>\n",
       "      <td>420</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>2</td>\n",
       "      <td>1816</td>\n",
       "      <td>276</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>2</td>\n",
       "      <td>1974</td>\n",
       "      <td>737</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>2</td>\n",
       "      <td>1974</td>\n",
       "      <td>1326</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>2</td>\n",
       "      <td>2076</td>\n",
       "      <td>703</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>2</td>\n",
       "      <td>2194</td>\n",
       "      <td>276</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    user_id  seller_id  cat_id\n",
       "0         1        471     389\n",
       "1         1        739    1252\n",
       "2         1        925    1023\n",
       "3         1       1019     992\n",
       "4         1       1156    1256\n",
       "5         1       2245     276\n",
       "6         1       4026    1252\n",
       "7         1       4177    1252\n",
       "8         1       4335     389\n",
       "9         2        420     602\n",
       "10        2        420    1213\n",
       "11        2       1179     500\n",
       "12        2       1544     737\n",
       "13        2       1679    1130\n",
       "14        2       1784     420\n",
       "15        2       1816     276\n",
       "16        2       1974     737\n",
       "17        2       1974    1326\n",
       "18        2       2076     703\n",
       "19        2       2194     276"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "categories_temp.head(20)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "d93c210b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>cat_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  cat_id\n",
       "0        1        471       1\n",
       "1        1        739       1\n",
       "2        1        925       1\n",
       "3        1       1019       1\n",
       "4        1       1156       1\n",
       "5        1       2245       1\n",
       "6        1       4026       1\n",
       "7        1       4177       1\n",
       "8        1       4335       1\n",
       "9        2        420       2"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "categories_temp1 = categories_temp.groupby([categories_temp[\"user_id\"],categories_temp[\"seller_id\"]]).count().reset_index()\n",
    "categories_temp1.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "9847f8fb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>categories</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  categories\n",
       "0        1          471           1\n",
       "1        1          739           1\n",
       "2        1          925           1\n",
       "3        1         1019           1\n",
       "4        1         1156           1\n",
       "5        1         2245           1\n",
       "6        1         4026           1\n",
       "7        1         4177           1\n",
       "8        1         4335           1\n",
       "9        2          420           2"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "categories_temp1.rename(columns={\"seller_id\":\"merchant_id\",\"cat_id\":\"categories\"},inplace=True)\n",
    "categories_temp1.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "f6001acf",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_train = pd.merge(df_train,categories_temp1,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "5f04e690",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>362112</td>\n",
       "      <td>2618</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>34944</td>\n",
       "      <td>2051</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>231552</td>\n",
       "      <td>3828</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>83</td>\n",
       "      <td>48</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>231552</td>\n",
       "      <td>2124</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>232320</td>\n",
       "      <td>1168</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label  age_range  gender  total_logs  \\\n",
       "0    34176         3906      0        6.0     0.0          39   \n",
       "1    34176          121      0        6.0     0.0          14   \n",
       "2    34176         4356      1        6.0     0.0          18   \n",
       "3    34176         2217      0        6.0     0.0           2   \n",
       "4   230784         4818      0        NaN     0.0           8   \n",
       "5   362112         2618      0        4.0     1.0           1   \n",
       "6    34944         2051      0        5.0     0.0           3   \n",
       "7   231552         3828      1        5.0     0.0          83   \n",
       "8   231552         2124      0        5.0     0.0           7   \n",
       "9   232320         1168      0        4.0     1.0           4   \n",
       "\n",
       "   unique_item_ids  categories  \n",
       "0               20           6  \n",
       "1                1           1  \n",
       "2                2           1  \n",
       "3                1           1  \n",
       "4                1           1  \n",
       "5                1           1  \n",
       "6                2           1  \n",
       "7               48          15  \n",
       "8                4           1  \n",
       "9                1           1  "
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "46f0e5b3",
   "metadata": {},
   "outputs": [],
   "source": [
    "#browse_days特征构建\n",
    "browse_days_temp = user_log.groupby([user_log[\"user_id\"],user_log[\"seller_id\"],user_log[\"time_stamp\"]]).count().reset_index()[[\"user_id\",\"seller_id\",\"time_stamp\"]]\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "fff0f7de",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>time_stamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1011</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>1009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1021</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1111</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  time_stamp\n",
       "0        1        471        1111\n",
       "1        1        739        1018\n",
       "2        1        925        1011\n",
       "3        1       1019        1111\n",
       "4        1       1156        1111\n",
       "5        1       2245        1009\n",
       "6        1       4026        1018\n",
       "7        1       4026        1021\n",
       "8        1       4177        1018\n",
       "9        1       4335        1111"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "browse_days_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "39c06972",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>time_stamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  time_stamp\n",
       "0        1        471           1\n",
       "1        1        739           1\n",
       "2        1        925           1\n",
       "3        1       1019           1\n",
       "4        1       1156           1\n",
       "5        1       2245           1\n",
       "6        1       4026           2\n",
       "7        1       4177           1\n",
       "8        1       4335           1\n",
       "9        2        420           1"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "browse_days_temp1 = browse_days_temp.groupby([browse_days_temp[\"user_id\"],browse_days_temp[\"seller_id\"]]).count().reset_index()\n",
    "browse_days_temp1.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "503b868f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>browse_days</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  browse_days\n",
       "0        1          471            1\n",
       "1        1          739            1\n",
       "2        1          925            1\n",
       "3        1         1019            1\n",
       "4        1         1156            1\n",
       "5        1         2245            1\n",
       "6        1         4026            2\n",
       "7        1         4177            1\n",
       "8        1         4335            1\n",
       "9        2          420            1"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "browse_days_temp1.rename(columns={\"seller_id\":\"merchant_id\",\"time_stamp\":\"browse_days\"},inplace=True)\n",
    "browse_days_temp1.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "55091f5e",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_train = pd.merge(df_train,browse_days_temp1,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "3a42261b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>362112</td>\n",
       "      <td>2618</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>34944</td>\n",
       "      <td>2051</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>231552</td>\n",
       "      <td>3828</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>83</td>\n",
       "      <td>48</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>231552</td>\n",
       "      <td>2124</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>232320</td>\n",
       "      <td>1168</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label  age_range  gender  total_logs  \\\n",
       "0    34176         3906      0        6.0     0.0          39   \n",
       "1    34176          121      0        6.0     0.0          14   \n",
       "2    34176         4356      1        6.0     0.0          18   \n",
       "3    34176         2217      0        6.0     0.0           2   \n",
       "4   230784         4818      0        NaN     0.0           8   \n",
       "5   362112         2618      0        4.0     1.0           1   \n",
       "6    34944         2051      0        5.0     0.0           3   \n",
       "7   231552         3828      1        5.0     0.0          83   \n",
       "8   231552         2124      0        5.0     0.0           7   \n",
       "9   232320         1168      0        4.0     1.0           4   \n",
       "\n",
       "   unique_item_ids  categories  browse_days  \n",
       "0               20           6            9  \n",
       "1                1           1            3  \n",
       "2                2           1            2  \n",
       "3                1           1            1  \n",
       "4                1           1            3  \n",
       "5                1           1            1  \n",
       "6                2           1            1  \n",
       "7               48          15            3  \n",
       "8                4           1            1  \n",
       "9                1           1            2  "
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "37be658e",
   "metadata": {},
   "outputs": [],
   "source": [
    "#one_clicks,shopping_carts,purchase_times,favorite_times\n",
    "one_clicks_temp = user_log.groupby([user_log[\"user_id\"],user_log[\"seller_id\"],user_log[\"action_type\"]]).count().reset_index()[[\"user_id\",\"seller_id\",\"action_type\",\"item_id\"]]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "bac1198d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>item_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  action_type  item_id\n",
       "0        1        471            0        1\n",
       "1        1        739            0        1\n",
       "2        1        925            0        3\n",
       "3        1        925            2        1\n",
       "4        1       1019            0       10\n",
       "5        1       1019            2        4\n",
       "6        1       1156            0        1\n",
       "7        1       2245            0        5\n",
       "8        1       4026            0        4\n",
       "9        1       4026            2        1"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "one_clicks_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "d184d574",
   "metadata": {},
   "outputs": [],
   "source": [
    "one_clicks_temp.rename(columns={\"seller_id\":\"merchant_id\",\"item_id\":\"times\"},inplace=True)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "58aabad2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  action_type  times\n",
       "0        1          471            0      1\n",
       "1        1          739            0      1\n",
       "2        1          925            0      3\n",
       "3        1          925            2      1\n",
       "4        1         1019            0     10\n",
       "5        1         1019            2      4\n",
       "6        1         1156            0      1\n",
       "7        1         2245            0      5\n",
       "8        1         4026            0      4\n",
       "9        1         4026            2      1"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "one_clicks_temp.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "1bc2a9bf",
   "metadata": {},
   "outputs": [],
   "source": [
    "one_clicks_temp[\"one_clicks\"] = one_clicks_temp[\"action_type\"] == 0\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "89f656b4",
   "metadata": {},
   "outputs": [],
   "source": [
    "one_clicks_temp[\"one_clicks\"] = one_clicks_temp[\"one_clicks\"] * one_clicks_temp[\"times\"]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "440dd5bc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>times</th>\n",
       "      <th>one_clicks</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  action_type  times  one_clicks\n",
       "0        1          471            0      1           1\n",
       "1        1          739            0      1           1\n",
       "2        1          925            0      3           3\n",
       "3        1          925            2      1           0\n",
       "4        1         1019            0     10          10\n",
       "5        1         1019            2      4           0\n",
       "6        1         1156            0      1           1\n",
       "7        1         2245            0      5           5\n",
       "8        1         4026            0      4           4\n",
       "9        1         4026            2      1           0"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "one_clicks_temp.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "4c2f9f7c",
   "metadata": {},
   "outputs": [],
   "source": [
    "one_clicks_temp[\"shopping_carts\"] = one_clicks_temp[\"action_type\"] == 1\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "0fd40b7e",
   "metadata": {},
   "outputs": [],
   "source": [
    "one_clicks_temp[\"shopping_carts\"] = one_clicks_temp[\"shopping_carts\"] * one_clicks_temp[\"times\"]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "394e0299",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>times</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  action_type  times  one_clicks  shopping_carts\n",
       "0        1          471            0      1           1               0\n",
       "1        1          739            0      1           1               0\n",
       "2        1          925            0      3           3               0\n",
       "3        1          925            2      1           0               0\n",
       "4        1         1019            0     10          10               0\n",
       "5        1         1019            2      4           0               0\n",
       "6        1         1156            0      1           1               0\n",
       "7        1         2245            0      5           5               0\n",
       "8        1         4026            0      4           4               0\n",
       "9        1         4026            2      1           0               0"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "one_clicks_temp.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "605988e2",
   "metadata": {},
   "outputs": [],
   "source": [
    "one_clicks_temp[\"purchase_times\"] = one_clicks_temp[\"action_type\"] == 2\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "9d5c8a03",
   "metadata": {},
   "outputs": [],
   "source": [
    "one_clicks_temp[\"purchase_times\"] = one_clicks_temp[\"purchase_times\"] * one_clicks_temp[\"times\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "b0ed59f7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>times</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  action_type  times  one_clicks  shopping_carts  \\\n",
       "0        1          471            0      1           1               0   \n",
       "1        1          739            0      1           1               0   \n",
       "2        1          925            0      3           3               0   \n",
       "3        1          925            2      1           0               0   \n",
       "4        1         1019            0     10          10               0   \n",
       "5        1         1019            2      4           0               0   \n",
       "6        1         1156            0      1           1               0   \n",
       "7        1         2245            0      5           5               0   \n",
       "8        1         4026            0      4           4               0   \n",
       "9        1         4026            2      1           0               0   \n",
       "\n",
       "   purchase_times  \n",
       "0               0  \n",
       "1               0  \n",
       "2               0  \n",
       "3               1  \n",
       "4               0  \n",
       "5               4  \n",
       "6               0  \n",
       "7               0  \n",
       "8               0  \n",
       "9               1  "
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "one_clicks_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "77bca19f",
   "metadata": {},
   "outputs": [],
   "source": [
    "one_clicks_temp[\"favourite_times\"] = one_clicks_temp[\"action_type\"] == 3\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "44e06f98",
   "metadata": {},
   "outputs": [],
   "source": [
    "one_clicks_temp[\"favourite_times\"] = one_clicks_temp[\"favourite_times\"] * one_clicks_temp[\"times\"]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "a30d3df8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>times</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  action_type  times  one_clicks  shopping_carts  \\\n",
       "0        1          471            0      1           1               0   \n",
       "1        1          739            0      1           1               0   \n",
       "2        1          925            0      3           3               0   \n",
       "3        1          925            2      1           0               0   \n",
       "4        1         1019            0     10          10               0   \n",
       "5        1         1019            2      4           0               0   \n",
       "6        1         1156            0      1           1               0   \n",
       "7        1         2245            0      5           5               0   \n",
       "8        1         4026            0      4           4               0   \n",
       "9        1         4026            2      1           0               0   \n",
       "\n",
       "   purchase_times  favourite_times  \n",
       "0               0                0  \n",
       "1               0                0  \n",
       "2               0                0  \n",
       "3               1                0  \n",
       "4               0                0  \n",
       "5               4                0  \n",
       "6               0                0  \n",
       "7               0                0  \n",
       "8               0                0  \n",
       "9               1                0  "
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "one_clicks_temp.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "c3b9eec9",
   "metadata": {},
   "outputs": [],
   "source": [
    "four_features = one_clicks_temp.groupby([one_clicks_temp[\"user_id\"],one_clicks_temp[\"merchant_id\"]]).sum().reset_index()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "773838d1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>times</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>2</td>\n",
       "      <td>26</td>\n",
       "      <td>23</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  action_type  times  one_clicks  shopping_carts  \\\n",
       "0        1          471            0      1           1               0   \n",
       "1        1          739            0      1           1               0   \n",
       "2        1          925            2      4           3               0   \n",
       "3        1         1019            2     14          10               0   \n",
       "4        1         1156            0      1           1               0   \n",
       "5        1         2245            0      5           5               0   \n",
       "6        1         4026            2      5           4               0   \n",
       "7        1         4177            0      1           1               0   \n",
       "8        1         4335            0      1           1               0   \n",
       "9        2          420            2     26          23               0   \n",
       "\n",
       "   purchase_times  favourite_times  \n",
       "0               0                0  \n",
       "1               0                0  \n",
       "2               1                0  \n",
       "3               4                0  \n",
       "4               0                0  \n",
       "5               0                0  \n",
       "6               1                0  \n",
       "7               0                0  \n",
       "8               0                0  \n",
       "9               3                0  "
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "four_features.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "36f91edd",
   "metadata": {},
   "outputs": [],
   "source": [
    "four_features = four_features.drop([\"action_type\",\"times\"], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "19252066",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_train = pd.merge(df_train,four_features,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "945ca759",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>36</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>362112</td>\n",
       "      <td>2618</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>34944</td>\n",
       "      <td>2051</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>231552</td>\n",
       "      <td>3828</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>83</td>\n",
       "      <td>48</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>78</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>231552</td>\n",
       "      <td>2124</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>232320</td>\n",
       "      <td>1168</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label  age_range  gender  total_logs  \\\n",
       "0    34176         3906      0        6.0     0.0          39   \n",
       "1    34176          121      0        6.0     0.0          14   \n",
       "2    34176         4356      1        6.0     0.0          18   \n",
       "3    34176         2217      0        6.0     0.0           2   \n",
       "4   230784         4818      0        NaN     0.0           8   \n",
       "5   362112         2618      0        4.0     1.0           1   \n",
       "6    34944         2051      0        5.0     0.0           3   \n",
       "7   231552         3828      1        5.0     0.0          83   \n",
       "8   231552         2124      0        5.0     0.0           7   \n",
       "9   232320         1168      0        4.0     1.0           4   \n",
       "\n",
       "   unique_item_ids  categories  browse_days  one_clicks  shopping_carts  \\\n",
       "0               20           6            9          36               0   \n",
       "1                1           1            3          13               0   \n",
       "2                2           1            2          12               0   \n",
       "3                1           1            1           1               0   \n",
       "4                1           1            3           7               0   \n",
       "5                1           1            1           0               0   \n",
       "6                2           1            1           2               0   \n",
       "7               48          15            3          78               0   \n",
       "8                4           1            1           6               0   \n",
       "9                1           1            2           2               0   \n",
       "\n",
       "   purchase_times  favourite_times  \n",
       "0               1                2  \n",
       "1               1                0  \n",
       "2               6                0  \n",
       "3               1                0  \n",
       "4               1                0  \n",
       "5               1                0  \n",
       "6               1                0  \n",
       "7               5                0  \n",
       "8               1                0  \n",
       "9               1                1  "
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "c8330207",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 260864 entries, 0 to 260863\n",
      "Data columns (total 13 columns):\n",
      " #   Column           Non-Null Count   Dtype  \n",
      "---  ------           --------------   -----  \n",
      " 0   user_id          260864 non-null  int64  \n",
      " 1   merchant_id      260864 non-null  int64  \n",
      " 2   label            260864 non-null  int64  \n",
      " 3   age_range        203802 non-null  float64\n",
      " 4   gender           250170 non-null  float64\n",
      " 5   total_logs       260864 non-null  int64  \n",
      " 6   unique_item_ids  260864 non-null  int64  \n",
      " 7   categories       260864 non-null  int64  \n",
      " 8   browse_days      260864 non-null  int64  \n",
      " 9   one_clicks       260864 non-null  int64  \n",
      " 10  shopping_carts   260864 non-null  int64  \n",
      " 11  purchase_times   260864 non-null  int64  \n",
      " 12  favourite_times  260864 non-null  int64  \n",
      "dtypes: float64(2), int64(11)\n",
      "memory usage: 27.9 MB\n"
     ]
    }
   ],
   "source": [
    "#建立好的特征处理缺失值\n",
    "df_train.info()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "ba443da8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id                0\n",
       "merchant_id            0\n",
       "label                  0\n",
       "age_range          57062\n",
       "gender             10694\n",
       "total_logs             0\n",
       "unique_item_ids        0\n",
       "categories             0\n",
       "browse_days            0\n",
       "one_clicks             0\n",
       "shopping_carts         0\n",
       "purchase_times         0\n",
       "favourite_times        0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.isnull().sum(axis=0)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "9550316b",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_train = df_train.fillna(method='ffill')\n",
    "# 缺失值向前填充\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "58ca89a9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 260864 entries, 0 to 260863\n",
      "Data columns (total 13 columns):\n",
      " #   Column           Non-Null Count   Dtype  \n",
      "---  ------           --------------   -----  \n",
      " 0   user_id          260864 non-null  int64  \n",
      " 1   merchant_id      260864 non-null  int64  \n",
      " 2   label            260864 non-null  int64  \n",
      " 3   age_range        260864 non-null  float64\n",
      " 4   gender           260864 non-null  float64\n",
      " 5   total_logs       260864 non-null  int64  \n",
      " 6   unique_item_ids  260864 non-null  int64  \n",
      " 7   categories       260864 non-null  int64  \n",
      " 8   browse_days      260864 non-null  int64  \n",
      " 9   one_clicks       260864 non-null  int64  \n",
      " 10  shopping_carts   260864 non-null  int64  \n",
      " 11  purchase_times   260864 non-null  int64  \n",
      " 12  favourite_times  260864 non-null  int64  \n",
      "dtypes: float64(2), int64(11)\n",
      "memory usage: 27.9 MB\n"
     ]
    }
   ],
   "source": [
    "df_train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "d4a4e8c2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '训练集用户性别年龄分布')"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#特征可视化\n",
    "plt.style.use('ggplot')\n",
    "sns.countplot(x = 'age_range', order = [1,2,3,4,5,6,7,8],hue= 'gender',data = df_train)\n",
    "plt.title('训练集用户性别年龄分布')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "d70f086b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['user_id', 'merchant_id', 'label', 'age_range', 'gender', 'total_logs', 'unique_item_ids', 'categories', 'browse_days', 'one_clicks', 'shopping_carts', 'purchase_times', 'favourite_times']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "colnm = df_train.columns.tolist()\n",
    "print(colnm)\n",
    "plt.figure(figsize = (5, 4))\n",
    "color = sns.color_palette()\n",
    "\n",
    "df_train[colnm[5]].hist(range=[0,80],bins = 80,color = color[1])\n",
    "plt.xlabel(colnm[5],fontsize = 12)\n",
    "plt.ylabel('用户数')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "531040b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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V65c0fTp063MCwCIIN2+O2vKlClauHChHn30UTU3N8vj8SgrK0vt7e1KT0/XH/7wB40dO1bTpk2zMi8AIIJ0uxL58MMPNWDAAHk8Hl28eFFPP/20iouLdfXqVaWnpys5OVmffvqppkyZomHDhlmZGQAQIbpdiaxcuVLjx4/XtGnTNH78eNlsNn3ve99TVFSUVq1apZEjR2revHnat2+flXkBABGk25XIp59+qkcffVSPPfaYnnzySSUmJur8+fMaOnSo1qxZo8bGRo0cOVJ79uyxMi8AIIJ0WyLf/OY3JUm3b99Wenq6Bg0apKtXr2r06NEaPHhw59t6V65caXTg7du3Kz09XRkZGSoqKlJNTY0cDodyc3MlKagxAIA1/H7sycCBAxUXF6cBAwYoMTFRKSkp92wfNGhQwAf97LPP1NTUpIyMDJWXl8vr9aqgoED19fWqq6sLagwAYB2/H3uyYcMGNTY2KioqSj6fT4MGDVJeXp7xAdvb2/XBBx9oypQpOnHihKqqqpSdnS1Jmjx5slwul9xut/FYUlLSPccrKSlRSUmJJKmwsFB2u904e0xMjPHrgzmuP8HkCiVyBYZcgSFXYEKVy2+J/Pe//9WiRYskST6fT9u2bQvqgEeOHNHo0aM1Z84cHThwQAcPHtSMGTMkSTabTW63W62trUpISDAa68rpdMrpdHZ+39DQYJzdbrcbvz6Y4/oTTK5QIldgyBUYcgUmmFzJycndbvNbIpLu+Xys6OjgHkHidrvldDoVHx+vadOm6fz5850fJ9/S0iKv16vY2FjjMQCAdXpshFA8K2TkyJGqr6+XJF28eFGff/65XC6XJKm6urrzuovpGADAOvddibS3t2vTpk26fv16rx9wxowZKioqUllZmdrb25Wfn69169apsbFRFRUVKigokCTl5eUZjwEArHHfEomJiVFOTo4mTZqkt956q1cPGBcXp5/+9Kf3jOXl5amyslJz5szRkCFDgh4DAFij22siGRkZloWw2WyaOnVqr40BAKzxQBfWz5492/l1a2urampqNHr06JCFAgD0DX5LZNKkSfrkk08UHR2tjo4OJSUl6Z133lFMTIxmz56tmTNnasCAAVZkBQBEGL8l8uqrr35pzOv1qqqqSr///e/lcrn05ptvhiQcACCyPdDprK6io6P11a9+Ve+++64uX77c25kAAH1E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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[6]].hist(range=[0,40],bins = 40,color = color[1])\n",
    "plt.xlabel(colnm[6],fontsize = 12)\n",
    "plt.ylabel('用户数')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "454a9350",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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O3HxwQcf8Le//Y2amhra29v55S9/meiWYu6SSy6hp6cHgMOHD+NwOBLcUez19/dz5MgRDMPg0KFDiW4nrmL1WpYcb7kZhUWLFlFdXU0wGKS1tRWPx5PolmLu7bffJhAI0NjYSGNjI2VlZZSWlia6rZh64oknhn+uqanhxz/+cQK7iY8bbriBhoYG9uzZQyQSYe3atYluKeZuueUWnnvuOT799FPmzZvHkiXJ8w2HsXot082GUdAd8SLydRCL1zKFiIiIWKZrIiIiYplCRERELFOIiIiIZQoRkXHsN7/5DXv27El0G5LEdGFdZJT6+/t59913+c53vpPoVkTiTisRkVHq7+/n9ddfT3QbIgmhlYjIV3j11VeHP0vqtttuY+nSpfzpT3/irbfewmazDdeeffZZ2traCIVCTJs2jdmzZ7Nu3ToA3nnnHXbs2MHQ0BDf//73h7+e9LXXXuPVV18lJyeHKVOmkJeXx6233jo85sSJE7nrrru48sorAXjggQe4//772bFjB9OnT2fNmjXDfW7bto3LL7+c6667brg20rin+jdNk/LycpYtWxaPp1K+7kwROc2//vUvc+3atWYoFDJ7enrMO++80/z000/Nmpoa88SJE+Znn31m3nPPPcO/39PTY65evfq0Yxw5csT8yU9+Yh4/ftwMBoNmZWWlGQwGzYGBAXPVqlVmf3+/+dJLL5l//OMfh8c89fsff/yxec8995jBYNA0TdNcvXq1+eijj5oHDhwwBwYGThunvr7efOedd8457vHjx81bb73VPH78uHns2DHzmWeeic2TJ0lHH3sicobW1laWLFnC1KlTmTp1Kr/73e8AuOuuu3jttdfw+Xzn/ATU/fv385///IeqqioAhoaG6Orq4rLLLsNmsxGJRIhEIsNf9tXa2so111yD3W7Hbrczd+5c/H4/V199NQDf/e53mT9//jl7H2nc+fPnk5uby4svvsjChQtPW82IjIZCROQc/vGPfzBt2jQaGhr43ve+x7XXXssDDzxw1n1M02Tp0qXce++9AJw4cYK0tDRM02TOnDk89thjOByO4Rf7c5k7d25UvzfSuDabjaeffpoPPviAlpYWXn75Zerq6pLmGysldnRhXeQMhYWF7N69m4GBAY4ePcoLL7zAgQMHmDNnDkuWLGHfvn2n/f5FF13E8ePHCYfDhMNhhoaG+Na3vkVrayt9fX2cOHGCRx55hM7OTg4dOsSkSZOor6/niSeeGP78ooULF/L+++/T39/PJ598wocffhjVyuNMI43b1dXFk08+yRVXXMEdd9xBX18fx48fH4unS5Kc/hsicobCwkICgQBr165lwoQJ/PCHP2TevHn8z//8D/fddx8lJSWkp6fT1dVFbm4ukydPZsWKFTz44IOYpslTTz2F0+mkvLycdevWYRgGN910E7Nnz2ZwcJDDhw9TWVlJeno6c+bMobKykoKCApYuXcrDDz/MxIkTuf/++y19QN5I48KXX8h0agV14403kpmZOYbPmiQrvTtLJI5ef/11Tpw4QXl5OZFIhF/84hfccMMNLFq0KNGtiViilYhIHOXn59PQ0MDOnTux2Wx885vf5Iorrkh0WyKWaSUiIiKW6cK6iIhYphARERHLFCIiImKZQkRERCxTiIiIiGX/B6HfMtKS0J8tAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[7]].hist(range=[0,10],bins = 10,color = color[1])\n",
    "plt.xlabel(colnm[7],fontsize = 12)\n",
    "plt.ylabel('用户数')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "de66b71d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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rFJTU7Vs2TK53W5NmzZNbW1tSk9PV2dnpzIyMuR2uxUMBvXnP/9Z69evVzQa1bp16zR//nwdP35c77zzjqqrqxUOh/XEE0+osLBwwJvA/v73vysQCOh3v/ud9u/fr507d0qSOjs7dfDgQb344os6ffq0nnjiCd14440qKirS5s2bFYlEFA6H9a9//Uu//OUvB+wHMEGIAF8pKirSuHHjNG7cONnt9v7nLdx8883nPG+jqalJHo+nf66poqIiNTY2yu12q6WlRTabTX19fWpra9P3v/99ZWRkyOVyadOmTSooKNAjjzwi6cup5z/99FOVl5dLUv82A4XIoUOHVFxcrDFjxqi4uLh/skin06mf/vSneuedd9Tc3Nw/O+uECROUk5OjgwcPKhQKKS8vT2lpaRo9evR5+wFMcE0E+EpKSkr/69TUVH09mcO111476L9NSUlRSkqKpk2bpn/84x/9E9u1trZq2rRpSk1N1fPPP6/i4mJ9/PHHWrp0qcLhsKLRqG688UatX79e69ev1yuvvDLotPvfnlzi6x4OHjyoF154QVlZWf2nrr5WXFysvXv3at++fSouLu4f2/n6AUwQIsBX9u3bp2AwqKNHj6q7u1vZ2dnn/XczZ87U/v379dlnn6mrq0sffvih8vPz5Xa71dzcLJfLpcmTJ6uzs1Pjx49XW1ubnnnmGd1www2699571d3drf/+97+6/vrr1djYqO7ubp05c0aPP/64WltbB+zvmmuu0YcffqgvvvhCe/fuVTAYlCQdPnxY06dP15w5c/TPf/7znG2Kioq0b98+NTc3y+PxSNKA/QAmOJ0FfOU73/mOli1bpr6+Pj344INKS0s777/LycnR3XffraeeekqSdNddd+nKK6+UJE2aNEnZ2dnq7e3V1VdfLUlyuVyaMWOGHn74YUnSrbfeqokTJ2rixIkqKyvTsmXLFIlEdNttt/Vvcz4/+MEPdODAAS1ZskTXXntt/2mv4uJiffDBB3rwwQdVUlKi9PR0tbW1yeVyKTMzUxMnTpTD4VB6evqg/QAmmIARuIydPXtW69ev18yZMy/76fyRGByJAMPMokWL/qc2YcIEvfDCC5f8Xg888IBycnL085//fChaA/4HRyIAAGNcWAcAGCNEAADGCBEAgDFCBABgjBABABj7fynue9OD0WVmAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[8]].hist(range=[0,10],bins = 10,color = color[1])\n",
    "plt.xlabel(colnm[8],fontsize = 12)\n",
    "plt.ylabel('用户数')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "2a3d8f55",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户单击次数统计')"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[9]].hist(range=[0,50],bins = 50,color = color[1])\n",
    "plt.xlabel(colnm[9],fontsize = 12)\n",
    "plt.ylabel('用户单击次数统计')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "59775a43",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEFCAYAAAAi1toCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAZvElEQVR4nO3df2xV9f3H8VfL7Q/LHd6WUmglLRRBLJNiLUaoONyaYQxIsjI3WTSzohtYZQxlMoV2uMZGSEWBdQ7FkUwzt9i4Lc5kXnWzVMLqsGusu8LkUixtmhWLcFt7y+053z9I++VHW66f9t72Xp6Pv3o/99xz3+/7Cb78nHPPPTG2bdsCAMBA7GgXAACIXIQIAMAYIQIAMEaIAACMESIAAGOECADAmGO0Cwi3lpYW49empqaqvb19BKsZHdHSh0QvY1G09CHRS5+MjIxBn2MlAgAwRogAAIwRIgAAY4QIAMAYIQIAMEaIAACMESIAAGOECADAGCECADB22V2xPhwFz+4b7RJwgdq1N492CcBljZUIAMAYIQIAMBbSw1ldXV3avn27LMtSQkKC1q1bp4ceekiTJ0+WJBUXFyszM1NVVVVqbm5WXl6eioqKJGlYYwCA8AjpSqSmpkZLly7VE088IZfLpddff10FBQUqKytTWVmZMjMzdeDAAVmWpfLycrW1tam1tXVYYwCA8AnpSmTJkiX9f586dUoTJ07UwYMH1djYqMzMTD3wwANqbGzUggULJEm5ubnyeDzyer3GY+np6efV4Ha75Xa7JUkVFRVKTU0NZcsIM4fDETVzGi29REsfEr0Etd8R3+MADh06pM7OTs2dO1e33nqrkpOTtXPnTn344Yfy+/1KSUmRJDmdTnm93mGNXaiwsFCFhYX9j6Pl3gA4KxAIRM2cRsu9K6KlD4le+gx1P5GQh4jP59OePXu0fv16uVwuxcXFSZKys7PV2tqqxMRE9fT0SJK6u7tlWdawxgAA4RPScyKBQECVlZVauXKlJk2apB07dujo0aOyLEt1dXXKyspSdna2PB6PJKmpqUlpaWnDGgMAhE9IVyLvvPOOvF6vqqurVV1drTlz5mjnzp2ybVv5+fmaO3euurq6VFpaqo6ODtXX16u8vFyShjUGAAiPGNu27dEuwufzqaGhQTk5OXK5XMMeG8pw7rG+/GWP8WsRGrVrb+aY9RgTLX1I9NJnVM+JBMPpdGrhwoUjNgYACA+uWAcAGCNEAADGCBEAgDFCBABgjBABABgjRAAAxggRAIAxQgQAYIwQAQAYI0QAAMYIEQCAMUIEAGCMEAEAGCNEAADGCBEAgDFCBABgjBABABgjRAAAxggRAIAxQgQAYIwQAQAYI0QAAMYIEQCAMUIEAGCMEAEAGCNEAADGCBEAgDFCBABgjBABABgjRAAAxggRAIAxRyh33tXVpe3bt8uyLCUkJGjdunXavXu3mpublZeXp6KiIklSVVXViI4BAMIjpCuRmpoaLV26VE888YRcLpdqa2tlWZbKy8vV1tam1tZWHThwYETHAADhE9KVyJIlS/r/PnXqlGpqanT77bdLknJzc+XxeOT1erVgwYIRG0tPTz+vBrfbLbfbLUmqqKhQampqKFtGmDkcjqiZ02jpJVr6kOglqP2O+B4HcOjQIXV2dmrSpElKSUmRJDmdTnm9Xvn9/hEdu1BhYaEKCwv7H7e3t4e0V4RXIBCImjlNTU2Nil6ipQ+JXvpkZGQM+lzIT6z7fD7t2bNHq1evVmJionp6eiRJ3d3dsixrxMcAAOET0hAJBAKqrKzUypUrNWnSJGVnZ8vj8UiSmpqalJaWNuJjAIDwCenhrHfeeUder1fV1dWqrq7W4sWLVVNTo46ODtXX16u8vFySVFpaOqJjAIDwiLFt2w7nG/p8PjU0NCgnJ0culyskY0NpaWkxrn35yx7j1yI0atfezDHrMSZa+pDopc9Q50TCcmL9XE6nUwsXLgzpGAAgPLhiHQBgjBABABgjRAAAxggRAIAxQgQAYIwQAQAYI0QAAMYIEQCAMUIEAGCMEAEAGCNEAADGCBEAgDFCBABgjBABABgjRAAAxggRAIAxQgQAYIwQAQAYI0QAAMYIEQCAMUIEAGCMEAEAGCNEAADGCBEAgDFCBABgjBABABgjRAAAxggRAIAxQgQAYIwQAQAYI0QAAMYcwWzU3d2txMTEAZ/r6elRfHz8oK89efKkKisrtWXLFvX29qqkpESTJ0+WJBUXFyszM1NVVVVqbm5WXl6eioqKJGlYYwCA8LjkSiQQCGjDhg06cuSIOjs7z3vO4/Fo69atg77W5/Np165d8vv9kqSmpiYVFBSorKxMZWVlyszM1IEDB2RZlsrLy9XW1qbW1tZhjQEAwueSKxGHw6Evv/xSf/nLX9Te3q7u7m7NmTNH+fn5ev7557V69epBXxsbG6t169bp6aefliQdPnxYBw8eVGNjozIzM/XAAw+osbFRCxYskCTl5ubK4/HI6/Uaj6Wnpw/vEwEABG3QEPF4PEpJSVFaWppSU1O1du1aSVJnZ6e2bt2qN998U3fffbdycnIG3XlSUtJ5j2fMmKFNmzYpOTlZO3fu1Icffii/36+UlBRJktPplNfrHdbYhdxut9xutySpoqJCqampQX84GPscDkfUzGm09BItfUj0EtR+B3vivffeU2Njo7q7u2Xbtqqrq3XkyBF1dHToxhtv1I9+9CNt375d+fn5mjJlSlBvlpWVpbi4OElSdna2WltblZiYqJ6eHklnz71YljWssQsVFhaqsLCw/3F7e3tQtSIyBAKBqJnT1NTUqOglWvqQ6KVPRkbGoM8Nek7k7rvv1rPPPquf/OQnmjNnjj744AP973//U1lZmZYvX6709HQVFRXphRdeCLqQHTt26OjRo7IsS3V1dcrKylJ2drY8Ho+ks+dM0tLShjUGAAifQVcib731lvbv369rr71WV155pa666iqlpqbqqaeeUkZGhrKzs/XZZ5/pG9/4RtBvtmLFCj333HOybVv5+fmaO3euurq6VFpaqo6ODtXX16u8vFyShjUGAAiPGNu27YGe+Oyzz9Td3a3GxkYdP35c48eP15133qmKigrdcccd2r17t+666y4tXrx42EX4fD41NDQoJydHLpdr2GNDaWlpMa5z+cse49ciNGrX3szhhjEmWvqQ6KXPUIezBl2JvPTSSxo3bpx8Pp+OHDmia6+9Vrt379aJEyc0b948ZWRk6O2339b111+vK6+80qiwPk6nUwsXLhyxMQBAeAx6TmTjxo2aMWOGFi1apBkzZsjpdOp73/ueYmJi9Pjjj2vKlCm688479ac//Smc9QIAxpBBVyJvv/22JkyYoOTkZF199dVKS0vToUOHNH78eG3ZskUdHR2aMmWKqqurw1kvAGAMGTREbrvtNknSmTNnNG/ePMXHx+vEiROaOnWqEhIS+r/Wu3HjxvBUCgAYcy55xXpcXFz/tR1paWkXfY12qN/NAgBEt0uGyLZt29TR0aGYmBjZtq34+HiVlpaGozYAwBh3yRA5fvy47r//fkmSbdv6zW9+E/KiAACRIaifgj/397FiY7kFCQDgrCEToe93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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[10]].hist(range=[0,3],bins = 3,color = color[1])\n",
    "plt.xlabel(colnm[10],fontsize = 12)\n",
    "plt.ylabel('用户数')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "1c06e310",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[11]].hist(range=[0,6],bins = 7,color = color[1])\n",
    "plt.xlabel(colnm[11],fontsize = 12)\n",
    "plt.ylabel(\"用户数\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "8efd7bb0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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XUVtbS1utxur1crSpUtxu93k5+cDkJOTg8fjwev1hlTLyMg44/lcLhculwuAsrIy0tPTwzGmhElCQkLM/JnGyiyxMgdolpCO2+9HDNH+/ftpa2sjOzubW265hdTUVDZu3Mi+ffvo7OwkLS0NOL39rdfrDbl2Nrvdjt1u77kdK/sly2mBQCBm/kxjZT/vWJkDNEu3qNtj3e/3s23bNlauXElKSgqJiYkA2Gw2fD4fSUlJdHV1AdDR0YFhGCHXREQkfMJ+TiQQCFBeXs6CBQsYOXIkGzZsoKGhAcMwqKmpITMzE5vNhsfjAaCxsRGLxRJyTUREwifsK5F33nkHr9dLZWUllZWVTJ48mY0bNxIMBsnLyyM7O5v29nZKS0tpaWmhrq4Op9MJEHJNRETCIy4YDAYj3cS5+P1+6uvrycrKIiUl5aJqvWlubjbd09znPaYfKwNj94oZes86ysTKHKBZukXdOZFQJCcnU1BQYKomIiLhoSvWRUTENIWIiIiYphARERHTFCIiImKaQkRERExTiIiIiGkKERERMU0hIiIipilERETENIWIiIiYFrVfeyISiulPvBfpFvrN7hUzIt2CyEXTSkRERExTiIiIiGkKERERMU3nRESiRKyc39G5nUuLViIiImJaTKxEKioqaGpqIjc3l6Kioki3I3JJi5UVVawZqBXioF+JVFdXYxgGTqeTI0eO4PP5It2SiMglI2r3WA/Vtm3bmDp1Krm5uezevZuuri5uueWWnvtdLhculwuAsrKySLUpIhKTBv1KpLOzk7S0NOD0fuvHjx8/43673U5ZWVm/BMivf/3rPh8jGsTKHKBZolGszAGaJRSDPkSSkpLo6uoCoKOjA8MwItyRiMilY9CHiM1mw+PxANDY2IjFYolwRyIil45BHyLTpk2jqqqKZ599lvfff5/c3NwBey673T5gxw6nWJkDNEs0ipU5QLOEYtCfWAfw+/3U19eTlZVFSkpKpNsREblkxESIiIhIZAz6t7NEYkH3avrEiRORbkXkoihEQlBRUcHq1avZvn17pFvpF62trTz88MORbqNP2tvb+b//+z8effRRHn/8cQKBQKRbMs3v91NWVsann37Kb3/720EfJK2trTz44IORbqNPTp06xbJly3A4HDgcDg4dOhTplvps69at7N27t9+PGxNfezKQvnlF/ObNm/H5fGRk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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[12]].hist(range=[0,6],bins = 6,color = color[1])\n",
    "plt.xlabel(colnm[12],fontsize = 12)\n",
    "plt.ylabel(\"用户数\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "5055a280",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\DELL\\AppData\\Local\\Temp\\ipykernel_5340\\3103668835.py:7: DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`. To silence this warning, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  mask = np.zeros_like(mcorr, dtype=np.bool)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set_style(\"dark\")\n",
    "\n",
    "plt.figure(figsize = (10,8))\n",
    "colnm = df_train.columns.tolist()[2:13]\n",
    "mcorr = df_train[colnm].corr()\n",
    "# np.zero_like的意思就是生成一个和你所给数组a相同shape的全0数组。\n",
    "mask = np.zeros_like(mcorr, dtype=np.bool)\n",
    "# np.triu_indices_from()返回方阵的上三角矩阵的索引\n",
    "mask[np.triu_indices_from(mask)] = True\n",
    "cmap = sns.diverging_palette(220, 10, as_cmap=True)\n",
    "g = sns.heatmap(mcorr, mask=mask, cmap=cmap, square=True, annot=True,fmt='0.2f')\n",
    "# 相关性好像不大，可是日志里确实也没啥可以用的其他特征了啊"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "441254a5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>36</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>83</td>\n",
       "      <td>48</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>78</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   age_range  gender  total_logs  unique_item_ids  categories  browse_days  \\\n",
       "0        6.0     0.0          39               20           6            9   \n",
       "1        6.0     0.0          14                1           1            3   \n",
       "2        6.0     0.0          18                2           1            2   \n",
       "3        6.0     0.0           2                1           1            1   \n",
       "4        6.0     0.0           8                1           1            3   \n",
       "5        4.0     1.0           1                1           1            1   \n",
       "6        5.0     0.0           3                2           1            1   \n",
       "7        5.0     0.0          83               48          15            3   \n",
       "8        5.0     0.0           7                4           1            1   \n",
       "9        4.0     1.0           4                1           1            2   \n",
       "\n",
       "   one_clicks  shopping_carts  purchase_times  favourite_times  \n",
       "0          36               0               1                2  \n",
       "1          13               0               1                0  \n",
       "2          12               0               6                0  \n",
       "3           1               0               1                0  \n",
       "4           7               0               1                0  \n",
       "5           0               0               1                0  \n",
       "6           2               0               1                0  \n",
       "7          78               0               5                0  \n",
       "8           6               0               1                0  \n",
       "9           2               0               1                1  "
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#模型构建与调参\n",
    "#逻辑斯特模型\n",
    "Y = df_train['label']\n",
    "X = df_train.drop(['user_id','merchant_id','label'],axis = 1)\n",
    "X.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "d9e4480e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0\n",
       "1    0\n",
       "2    1\n",
       "3    0\n",
       "4    0\n",
       "5    0\n",
       "6    0\n",
       "7    1\n",
       "8    0\n",
       "9    0\n",
       "Name: label, dtype: int64"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "041d9c2a",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X,Y, test_size = 0.25,random_state = 10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "id": "ecad9adb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
      "[[0.79596485 0.20403515]\n",
      " [0.95828116 0.04171884]\n",
      " [0.95192756 0.04807244]\n",
      " ...\n",
      " [0.94051927 0.05948073]\n",
      " [0.95677735 0.04322265]\n",
      " [0.93242882 0.06757118]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import roc_curve, auc\n",
    "Logit = LogisticRegression(solver='liblinear')\n",
    "Logit.fit(X_train, y_train)\n",
    "Predict = Logit.predict(X_test)\n",
    "Predict_proba = Logit.predict_proba(X_test)\n",
    "print(Predict[0:20])\n",
    "print(Predict_proba[:])\n",
    "Score = accuracy_score(y_test, Predict)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "id": "17667857",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lr.coef_: [[ 0.0494296  -0.09897898  0.01360686  0.01184834  0.07017633  0.06282481\n",
      "  -0.01775597 -0.13624657  0.17884728 -0.01123788]]\n",
      "lr.intercept_: [-3.47137226]\n"
     ]
    }
   ],
   "source": [
    "print(\"lr.coef_: {}\".format(Logit.coef_))\n",
    "print(\"lr.intercept_: {}\".format(Logit.intercept_))\n",
    "# 截距与斜率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "id": "a1b2d78f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "准确率为:  0.9386998592077297\n"
     ]
    }
   ],
   "source": [
    "#初始化逻辑回归算法\n",
    "LogRegAlg=LogisticRegression(random_state=1,solver='liblinear')\n",
    "re = LogRegAlg.fit(X,Y)\n",
    "#使用sklearn库里面的交叉验证函数获取预测准确率分数\n",
    "scores = model_selection.cross_val_score(LogRegAlg,X,Y,cv=3)\n",
    "#使用交叉验证分数的平均值作为最终的准确率\n",
    "print(\"准确率为: \",scores.mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "id": "24cf8880",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test set accuracy: 0.94\n"
     ]
    }
   ],
   "source": [
    "#K近邻模型\n",
    "\n",
    "# 模型实例化，并将邻居个数设为3 \n",
    "clf = KNeighborsClassifier(n_neighbors=1000)\n",
    "# 利用训练数据和训练目标值来拟合模型 \n",
    "clf.fit(X_train, y_train)\n",
    "# 使用模型进行预测，并计算准确率 \n",
    "print(\"Test set accuracy: {:.2f}\".format(clf.score(X_test, y_test)))\n",
    "\n",
    "#“这一算法对于有很多特 征（几百或更多）的数据集往往效果不好，对于大多数特征的大多数取值都为 0 的数据集 （所谓的稀疏数据集）来说，这一算法的效果尤其不好”我的数据里面零很多，果然预测效果很不好，和闹着玩似的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "32c3c697",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.89760368 0.10239632]\n",
      " [0.95837129 0.04162871]\n",
      " [0.95837129 0.04162871]\n",
      " ...\n",
      " [0.91089364 0.08910636]\n",
      " [0.95837129 0.04162871]\n",
      " [0.93376113 0.06623887]]\n",
      "Accuracy on training set: 0.939\n",
      "Accuracy on test set: 0.938\n"
     ]
    }
   ],
   "source": [
    "#决策树\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "tree = DecisionTreeClassifier(max_depth=4,random_state=0) \n",
    "tree.fit(X_train, y_train)\n",
    "Predict_proba = tree.predict_proba(X_test)\n",
    "print(Predict_proba[:])\n",
    "print(\"Accuracy on training set: {:.3f}\".format(tree.score(X_train, y_train))) \n",
    "print(\"Accuracy on test set: {:.3f}\".format(tree.score(X_test, y_test)))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "id": "3ef6e24a",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.tree import export_graphviz\n",
    "export_graphviz(tree, out_file=\"tree.dot\", class_names=[\"0\",\"1\"], feature_names=X.columns.tolist(), impurity=False, filled=True)\n",
    "# 我们可以利用 tree 模块的 export_graphviz 函数来将树可视化。这个函数会生成一 个 .dot 格式的文件，这是一种用于保存图形的文本文件格式。\n",
    "# 设置为结点添加颜色 的选项，颜色表示每个结点中的多数类别，同时传入类别名称和特征名称，这样可以对 树正确标记"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "id": "7ea21fcc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.38.0 (20140413.2041)\n",
       " -->\n",
       "<!-- Title: Tree Pages: 1 -->\n",
       "<svg width=\"2509pt\" height=\"477pt\"\n",
       " viewBox=\"0.00 0.00 2509.00 477.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 473)\">\n",
       "<title>Tree</title>\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-473 2505,-473 2505,4 -4,4\"/>\n",
       "<!-- 0 -->\n",
       "<g id=\"node1\" class=\"node\"><title>0</title>\n",
       "<polygon fill=\"#e78946\" stroke=\"black\" points=\"1370,-469 1199,-469 1199,-401 1370,-401 1370,-469\"/>\n",
       "<text text-anchor=\"middle\" x=\"1284.5\" y=\"-453.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">categories &lt;= 2.5</text>\n",
       "<text text-anchor=\"middle\" x=\"1284.5\" y=\"-438.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 195648</text>\n",
       "<text text-anchor=\"middle\" x=\"1284.5\" y=\"-423.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [183706, 11942]</text>\n",
       "<text text-anchor=\"middle\" x=\"1284.5\" y=\"-408.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node2\" class=\"node\"><title>1</title>\n",
       "<polygon fill=\"#e68844\" stroke=\"black\" points=\"1079,-365 916,-365 916,-297 1079,-297 1079,-365\"/>\n",
       "<text text-anchor=\"middle\" x=\"997.5\" y=\"-349.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">purchase_times &lt;= 1.5</text>\n",
       "<text text-anchor=\"middle\" x=\"997.5\" y=\"-334.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 159636</text>\n",
       "<text text-anchor=\"middle\" x=\"997.5\" y=\"-319.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [151437, 8199]</text>\n",
       "<text text-anchor=\"middle\" x=\"997.5\" y=\"-304.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge1\" class=\"edge\"><title>0&#45;&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1198.78,-403.535C1164.2,-391.247 1124.26,-377.05 1089.11,-364.559\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1089.93,-361.135 1079.33,-361.084 1087.58,-367.731 1089.93,-361.135\"/>\n",
       "<text text-anchor=\"middle\" x=\"1090.07\" y=\"-379.961\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">True</text>\n",
       "</g>\n",
       "<!-- 16 -->\n",
       "<g id=\"node17\" class=\"node\"><title>16</title>\n",
       "<polygon fill=\"#e89050\" stroke=\"black\" points=\"1679,-365 1506,-365 1506,-297 1679,-297 1679,-365\"/>\n",
       "<text text-anchor=\"middle\" x=\"1592.5\" y=\"-349.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">unique_item_ids &lt;= 19.5</text>\n",
       "<text text-anchor=\"middle\" x=\"1592.5\" y=\"-334.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 36012</text>\n",
       "<text text-anchor=\"middle\" x=\"1592.5\" y=\"-319.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [32269, 3743]</text>\n",
       "<text text-anchor=\"middle\" x=\"1592.5\" y=\"-304.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;16 -->\n",
       "<g id=\"edge16\" class=\"edge\"><title>0&#45;&gt;16</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1370.3,-405.587C1409.43,-392.626 1455.93,-377.227 1496.26,-363.873\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1497.44,-367.169 1505.83,-360.703 1495.24,-360.524 1497.44,-367.169\"/>\n",
       "<text text-anchor=\"middle\" x=\"1494.61\" y=\"-379.342\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">False</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node3\" class=\"node\"><title>2</title>\n",
       "<polygon fill=\"#e68743\" stroke=\"black\" points=\"591,-261 426,-261 426,-193 591,-193 591,-261\"/>\n",
       "<text text-anchor=\"middle\" x=\"508.5\" y=\"-245.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">unique_item_ids &lt;= 2.5</text>\n",
       "<text text-anchor=\"middle\" x=\"508.5\" y=\"-230.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 136259</text>\n",
       "<text text-anchor=\"middle\" x=\"508.5\" y=\"-215.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [129939, 6320]</text>\n",
       "<text text-anchor=\"middle\" x=\"508.5\" y=\"-200.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge2\" class=\"edge\"><title>1&#45;&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M915.928,-312.985C829.103,-294.874 691.97,-266.27 601.136,-247.323\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"601.625,-243.85 591.121,-245.234 600.195,-250.702 601.625,-243.85\"/>\n",
       "</g>\n",
       "<!-- 9 -->\n",
       "<g id=\"node10\" class=\"node\"><title>9</title>\n",
       "<polygon fill=\"#e78c4a\" stroke=\"black\" points=\"1078.5,-261 916.5,-261 916.5,-193 1078.5,-193 1078.5,-261\"/>\n",
       "<text text-anchor=\"middle\" x=\"997.5\" y=\"-245.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">purchase_times &lt;= 2.5</text>\n",
       "<text text-anchor=\"middle\" x=\"997.5\" y=\"-230.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 23377</text>\n",
       "<text text-anchor=\"middle\" x=\"997.5\" y=\"-215.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [21498, 1879]</text>\n",
       "<text text-anchor=\"middle\" x=\"997.5\" y=\"-200.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;9 -->\n",
       "<g id=\"edge9\" class=\"edge\"><title>1&#45;&gt;9</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M997.5,-296.884C997.5,-288.778 997.5,-279.982 997.5,-271.472\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1001,-271.299 997.5,-261.299 994,-271.299 1001,-271.299\"/>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node4\" class=\"node\"><title>3</title>\n",
       "<polygon fill=\"#e68742\" stroke=\"black\" points=\"333,-157 168,-157 168,-89 333,-89 333,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"250.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">unique_item_ids &lt;= 1.5</text>\n",
       "<text text-anchor=\"middle\" x=\"250.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 104095</text>\n",
       "<text text-anchor=\"middle\" x=\"250.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [99610, 4485]</text>\n",
       "<text text-anchor=\"middle\" x=\"250.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge3\" class=\"edge\"><title>2&#45;&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M425.803,-193.306C399.302,-182.829 369.795,-171.163 342.661,-160.436\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"343.758,-157.106 333.172,-156.684 341.184,-163.616 343.758,-157.106\"/>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node7\" class=\"node\"><title>6</title>\n",
       "<polygon fill=\"#e78945\" stroke=\"black\" points=\"586,-157 431,-157 431,-89 586,-89 586,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"508.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">browse_days &lt;= 2.5</text>\n",
       "<text text-anchor=\"middle\" x=\"508.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 32164</text>\n",
       "<text text-anchor=\"middle\" x=\"508.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [30329, 1835]</text>\n",
       "<text text-anchor=\"middle\" x=\"508.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;6 -->\n",
       "<g id=\"edge6\" class=\"edge\"><title>2&#45;&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M508.5,-192.884C508.5,-184.778 508.5,-175.982 508.5,-167.472\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"512,-167.299 508.5,-157.299 505,-167.299 512,-167.299\"/>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node5\" class=\"node\"><title>4</title>\n",
       "<polygon fill=\"#e68642\" stroke=\"black\" points=\"155,-53 0,-53 0,-0 155,-0 155,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"77.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 79032</text>\n",
       "<text text-anchor=\"middle\" x=\"77.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [75742, 3290]</text>\n",
       "<text text-anchor=\"middle\" x=\"77.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge4\" class=\"edge\"><title>3&#45;&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M189.993,-88.9485C171.656,-78.9318 151.6,-67.9767 133.567,-58.1263\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"134.795,-54.809 124.341,-53.0867 131.439,-60.9522 134.795,-54.809\"/>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node6\" class=\"node\"><title>5</title>\n",
       "<polygon fill=\"#e68743\" stroke=\"black\" points=\"328,-53 173,-53 173,-0 328,-0 328,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"250.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 25063</text>\n",
       "<text text-anchor=\"middle\" x=\"250.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [23868, 1195]</text>\n",
       "<text text-anchor=\"middle\" x=\"250.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;5 -->\n",
       "<g id=\"edge5\" class=\"edge\"><title>3&#45;&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M250.5,-88.9485C250.5,-80.7153 250.5,-71.848 250.5,-63.4814\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"254,-63.2367 250.5,-53.2367 247,-63.2367 254,-63.2367\"/>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node8\" class=\"node\"><title>7</title>\n",
       "<polygon fill=\"#e68844\" stroke=\"black\" points=\"501,-53 346,-53 346,-0 501,-0 501,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"423.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 22502</text>\n",
       "<text text-anchor=\"middle\" x=\"423.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [21307, 1195]</text>\n",
       "<text text-anchor=\"middle\" x=\"423.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;7 -->\n",
       "<g id=\"edge7\" class=\"edge\"><title>6&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M478.771,-88.9485C470.543,-79.8005 461.61,-69.8697 453.374,-60.7126\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"455.939,-58.331 446.649,-53.2367 450.735,-63.0123 455.939,-58.331\"/>\n",
       "</g>\n",
       "<!-- 8 -->\n",
       "<g id=\"node9\" class=\"node\"><title>8</title>\n",
       "<polygon fill=\"#e78a47\" stroke=\"black\" points=\"657.5,-53 519.5,-53 519.5,-0 657.5,-0 657.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"588.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 9662</text>\n",
       "<text text-anchor=\"middle\" x=\"588.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [9022, 640]</text>\n",
       "<text text-anchor=\"middle\" x=\"588.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;8 -->\n",
       "<g id=\"edge8\" class=\"edge\"><title>6&#45;&gt;8</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M536.48,-88.9485C544.147,-79.892 552.463,-70.0682 560.151,-60.9875\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"562.922,-63.1305 566.712,-53.2367 557.58,-58.6076 562.922,-63.1305\"/>\n",
       "</g>\n",
       "<!-- 10 -->\n",
       "<g id=\"node11\" class=\"node\"><title>10</title>\n",
       "<polygon fill=\"#e78b49\" stroke=\"black\" points=\"986,-157 821,-157 821,-89 986,-89 986,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"903.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">unique_item_ids &lt;= 4.5</text>\n",
       "<text text-anchor=\"middle\" x=\"903.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 18297</text>\n",
       "<text text-anchor=\"middle\" x=\"903.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [16911, 1386]</text>\n",
       "<text text-anchor=\"middle\" x=\"903.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 9&#45;&gt;10 -->\n",
       "<g id=\"edge10\" class=\"edge\"><title>9&#45;&gt;10</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M966.981,-192.884C958.69,-183.887 949.616,-174.041 940.988,-164.678\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"943.538,-162.281 934.188,-157.299 938.391,-167.025 943.538,-162.281\"/>\n",
       "</g>\n",
       "<!-- 13 -->\n",
       "<g id=\"node14\" class=\"node\"><title>13</title>\n",
       "<polygon fill=\"#e88f4e\" stroke=\"black\" points=\"1177,-157 1004,-157 1004,-89 1177,-89 1177,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"1090.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">unique_item_ids &lt;= 75.0</text>\n",
       "<text text-anchor=\"middle\" x=\"1090.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 5080</text>\n",
       "<text text-anchor=\"middle\" x=\"1090.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [4587, 493]</text>\n",
       "<text text-anchor=\"middle\" x=\"1090.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 9&#45;&gt;13 -->\n",
       "<g id=\"edge13\" class=\"edge\"><title>9&#45;&gt;13</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1027.69,-192.884C1035.82,-183.976 1044.7,-174.235 1053.16,-164.957\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1055.99,-167.047 1060.14,-157.299 1050.81,-162.331 1055.99,-167.047\"/>\n",
       "</g>\n",
       "<!-- 11 -->\n",
       "<g id=\"node12\" class=\"node\"><title>11</title>\n",
       "<polygon fill=\"#e78b48\" stroke=\"black\" points=\"831,-53 676,-53 676,-0 831,-0 831,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"753.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 14414</text>\n",
       "<text text-anchor=\"middle\" x=\"753.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [13374, 1040]</text>\n",
       "<text text-anchor=\"middle\" x=\"753.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 10&#45;&gt;11 -->\n",
       "<g id=\"edge11\" class=\"edge\"><title>10&#45;&gt;11</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M851.037,-88.9485C835.5,-79.1601 818.541,-68.4756 803.185,-58.8015\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"804.678,-55.6058 794.352,-53.2367 800.947,-61.5285 804.678,-55.6058\"/>\n",
       "</g>\n",
       "<!-- 12 -->\n",
       "<g id=\"node13\" class=\"node\"><title>12</title>\n",
       "<polygon fill=\"#e88d4c\" stroke=\"black\" points=\"987.5,-53 849.5,-53 849.5,-0 987.5,-0 987.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"918.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 3883</text>\n",
       "<text text-anchor=\"middle\" x=\"918.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [3537, 346]</text>\n",
       "<text text-anchor=\"middle\" x=\"918.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 10&#45;&gt;12 -->\n",
       "<g id=\"edge12\" class=\"edge\"><title>10&#45;&gt;12</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M908.746,-88.9485C910.068,-80.6238 911.492,-71.6509 912.833,-63.2027\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"916.304,-63.6618 914.415,-53.2367 909.39,-62.5643 916.304,-63.6618\"/>\n",
       "</g>\n",
       "<!-- 14 -->\n",
       "<g id=\"node15\" class=\"node\"><title>14</title>\n",
       "<polygon fill=\"#e88f4e\" stroke=\"black\" points=\"1143.5,-53 1005.5,-53 1005.5,-0 1143.5,-0 1143.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1074.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 5079</text>\n",
       "<text text-anchor=\"middle\" x=\"1074.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [4587, 492]</text>\n",
       "<text text-anchor=\"middle\" x=\"1074.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 13&#45;&gt;14 -->\n",
       "<g id=\"edge14\" class=\"edge\"><title>13&#45;&gt;14</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1084.9,-88.9485C1083.49,-80.6238 1081.98,-71.6509 1080.54,-63.2027\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1083.98,-62.5121 1078.86,-53.2367 1077.08,-63.6807 1083.98,-62.5121\"/>\n",
       "</g>\n",
       "<!-- 15 -->\n",
       "<g id=\"node16\" class=\"node\"><title>15</title>\n",
       "<polygon fill=\"#399de5\" stroke=\"black\" points=\"1259,-53 1162,-53 1162,-0 1259,-0 1259,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1210.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 1</text>\n",
       "<text text-anchor=\"middle\" x=\"1210.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [0, 1]</text>\n",
       "<text text-anchor=\"middle\" x=\"1210.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 1</text>\n",
       "</g>\n",
       "<!-- 13&#45;&gt;15 -->\n",
       "<g id=\"edge15\" class=\"edge\"><title>13&#45;&gt;15</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1132.47,-88.9485C1144.55,-79.4346 1157.71,-69.074 1169.72,-59.6175\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1172.13,-62.1734 1177.82,-53.2367 1167.8,-56.6739 1172.13,-62.1734\"/>\n",
       "</g>\n",
       "<!-- 17 -->\n",
       "<g id=\"node18\" class=\"node\"><title>17</title>\n",
       "<polygon fill=\"#e88e4d\" stroke=\"black\" points=\"1673.5,-261 1511.5,-261 1511.5,-193 1673.5,-193 1673.5,-261\"/>\n",
       "<text text-anchor=\"middle\" x=\"1592.5\" y=\"-245.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">purchase_times &lt;= 1.5</text>\n",
       "<text text-anchor=\"middle\" x=\"1592.5\" y=\"-230.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 29836</text>\n",
       "<text text-anchor=\"middle\" x=\"1592.5\" y=\"-215.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [27125, 2711]</text>\n",
       "<text text-anchor=\"middle\" x=\"1592.5\" y=\"-200.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 16&#45;&gt;17 -->\n",
       "<g id=\"edge17\" class=\"edge\"><title>16&#45;&gt;17</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1592.5,-296.884C1592.5,-288.778 1592.5,-279.982 1592.5,-271.472\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1596,-271.299 1592.5,-261.299 1589,-271.299 1596,-271.299\"/>\n",
       "</g>\n",
       "<!-- 24 -->\n",
       "<g id=\"node25\" class=\"node\"><title>24</title>\n",
       "<polygon fill=\"#ea9a61\" stroke=\"black\" points=\"2133.5,-261 1987.5,-261 1987.5,-193 2133.5,-193 2133.5,-261\"/>\n",
       "<text text-anchor=\"middle\" x=\"2060.5\" y=\"-245.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">categories &lt;= 10.5</text>\n",
       "<text text-anchor=\"middle\" x=\"2060.5\" y=\"-230.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 6176</text>\n",
       "<text text-anchor=\"middle\" x=\"2060.5\" y=\"-215.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [5144, 1032]</text>\n",
       "<text text-anchor=\"middle\" x=\"2060.5\" y=\"-200.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 16&#45;&gt;24 -->\n",
       "<g id=\"edge24\" class=\"edge\"><title>16&#45;&gt;24</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1679.16,-311.113C1764.34,-292.547 1893.45,-264.409 1977.39,-246.114\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1978.37,-249.482 1987.4,-243.933 1976.88,-242.643 1978.37,-249.482\"/>\n",
       "</g>\n",
       "<!-- 18 -->\n",
       "<g id=\"node19\" class=\"node\"><title>18</title>\n",
       "<polygon fill=\"#e78b49\" stroke=\"black\" points=\"1586,-157 1421,-157 1421,-89 1586,-89 1586,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"1503.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">unique_item_ids &lt;= 9.5</text>\n",
       "<text text-anchor=\"middle\" x=\"1503.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 16337</text>\n",
       "<text text-anchor=\"middle\" x=\"1503.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [15096, 1241]</text>\n",
       "<text text-anchor=\"middle\" x=\"1503.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 17&#45;&gt;18 -->\n",
       "<g id=\"edge18\" class=\"edge\"><title>17&#45;&gt;18</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1563.6,-192.884C1555.83,-183.976 1547.33,-174.235 1539.24,-164.957\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1541.77,-162.533 1532.56,-157.299 1536.49,-167.135 1541.77,-162.533\"/>\n",
       "</g>\n",
       "<!-- 21 -->\n",
       "<g id=\"node22\" class=\"node\"><title>21</title>\n",
       "<polygon fill=\"#e89051\" stroke=\"black\" points=\"1759,-157 1604,-157 1604,-89 1759,-89 1759,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"1681.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">browse_days &lt;= 3.5</text>\n",
       "<text text-anchor=\"middle\" x=\"1681.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 13499</text>\n",
       "<text text-anchor=\"middle\" x=\"1681.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [12029, 1470]</text>\n",
       "<text text-anchor=\"middle\" x=\"1681.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 17&#45;&gt;21 -->\n",
       "<g id=\"edge21\" class=\"edge\"><title>17&#45;&gt;21</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1621.4,-192.884C1629.17,-183.976 1637.67,-174.235 1645.76,-164.957\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1648.51,-167.135 1652.44,-157.299 1643.23,-162.533 1648.51,-167.135\"/>\n",
       "</g>\n",
       "<!-- 19 -->\n",
       "<g id=\"node20\" class=\"node\"><title>19</title>\n",
       "<polygon fill=\"#e78a48\" stroke=\"black\" points=\"1423.5,-53 1277.5,-53 1277.5,-0 1423.5,-0 1423.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1350.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 11234</text>\n",
       "<text text-anchor=\"middle\" x=\"1350.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [10464, 770]</text>\n",
       "<text text-anchor=\"middle\" x=\"1350.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 18&#45;&gt;19 -->\n",
       "<g id=\"edge19\" class=\"edge\"><title>18&#45;&gt;19</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1449.99,-88.9485C1433.99,-79.0686 1416.52,-68.2758 1400.74,-58.5305\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1402.52,-55.5139 1392.17,-53.2367 1398.84,-61.4695 1402.52,-55.5139\"/>\n",
       "</g>\n",
       "<!-- 20 -->\n",
       "<g id=\"node21\" class=\"node\"><title>20</title>\n",
       "<polygon fill=\"#e88e4d\" stroke=\"black\" points=\"1579.5,-53 1441.5,-53 1441.5,-0 1579.5,-0 1579.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1510.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 5103</text>\n",
       "<text text-anchor=\"middle\" x=\"1510.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [4632, 471]</text>\n",
       "<text text-anchor=\"middle\" x=\"1510.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 18&#45;&gt;20 -->\n",
       "<g id=\"edge20\" class=\"edge\"><title>18&#45;&gt;20</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1505.95,-88.9485C1506.56,-80.7153 1507.21,-71.848 1507.83,-63.4814\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1511.35,-63.468 1508.59,-53.2367 1504.36,-62.9508 1511.35,-63.468\"/>\n",
       "</g>\n",
       "<!-- 22 -->\n",
       "<g id=\"node23\" class=\"node\"><title>22</title>\n",
       "<polygon fill=\"#e88f50\" stroke=\"black\" points=\"1753,-53 1598,-53 1598,-0 1753,-0 1753,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1675.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 11309</text>\n",
       "<text text-anchor=\"middle\" x=\"1675.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [10151, 1158]</text>\n",
       "<text text-anchor=\"middle\" x=\"1675.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 21&#45;&gt;22 -->\n",
       "<g id=\"edge22\" class=\"edge\"><title>21&#45;&gt;22</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1679.4,-88.9485C1678.88,-80.7153 1678.32,-71.848 1677.78,-63.4814\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1681.26,-62.9948 1677.13,-53.2367 1674.27,-63.4384 1681.26,-62.9948\"/>\n",
       "</g>\n",
       "<!-- 23 -->\n",
       "<g id=\"node24\" class=\"node\"><title>23</title>\n",
       "<polygon fill=\"#e9965a\" stroke=\"black\" points=\"1909.5,-53 1771.5,-53 1771.5,-0 1909.5,-0 1909.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1840.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 2190</text>\n",
       "<text text-anchor=\"middle\" x=\"1840.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [1878, 312]</text>\n",
       "<text text-anchor=\"middle\" x=\"1840.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 21&#45;&gt;23 -->\n",
       "<g id=\"edge23\" class=\"edge\"><title>21&#45;&gt;23</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1737.11,-88.9485C1753.81,-79.0237 1772.06,-68.1776 1788.51,-58.3977\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1790.64,-61.2046 1797.45,-53.0867 1787.06,-55.1872 1790.64,-61.2046\"/>\n",
       "</g>\n",
       "<!-- 25 -->\n",
       "<g id=\"node26\" class=\"node\"><title>25</title>\n",
       "<polygon fill=\"#ea975b\" stroke=\"black\" points=\"2141.5,-157 1979.5,-157 1979.5,-89 2141.5,-89 2141.5,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"2060.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">purchase_times &lt;= 3.5</text>\n",
       "<text text-anchor=\"middle\" x=\"2060.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 4664</text>\n",
       "<text text-anchor=\"middle\" x=\"2060.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [3972, 692]</text>\n",
       "<text text-anchor=\"middle\" x=\"2060.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 24&#45;&gt;25 -->\n",
       "<g id=\"edge25\" class=\"edge\"><title>24&#45;&gt;25</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2060.5,-192.884C2060.5,-184.778 2060.5,-175.982 2060.5,-167.472\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2064,-167.299 2060.5,-157.299 2057,-167.299 2064,-167.299\"/>\n",
       "</g>\n",
       "<!-- 28 -->\n",
       "<g id=\"node29\" class=\"node\"><title>28</title>\n",
       "<polygon fill=\"#eda672\" stroke=\"black\" points=\"2377.5,-157 2223.5,-157 2223.5,-89 2377.5,-89 2377.5,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"2300.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">browse_days &lt;= 26.5</text>\n",
       "<text text-anchor=\"middle\" x=\"2300.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 1512</text>\n",
       "<text text-anchor=\"middle\" x=\"2300.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [1172, 340]</text>\n",
       "<text text-anchor=\"middle\" x=\"2300.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 24&#45;&gt;28 -->\n",
       "<g id=\"edge28\" class=\"edge\"><title>24&#45;&gt;28</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2133.81,-194.842C2159.21,-184.046 2187.92,-171.845 2214.27,-160.648\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2215.64,-163.866 2223.48,-156.734 2212.91,-157.424 2215.64,-163.866\"/>\n",
       "</g>\n",
       "<!-- 26 -->\n",
       "<g id=\"node27\" class=\"node\"><title>26</title>\n",
       "<polygon fill=\"#e99559\" stroke=\"black\" points=\"2065.5,-53 1927.5,-53 1927.5,-0 2065.5,-0 2065.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1996.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 3791</text>\n",
       "<text text-anchor=\"middle\" x=\"1996.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [3266, 525]</text>\n",
       "<text text-anchor=\"middle\" x=\"1996.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 25&#45;&gt;26 -->\n",
       "<g id=\"edge26\" class=\"edge\"><title>25&#45;&gt;26</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2038.12,-88.9485C2032.11,-80.0749 2025.6,-70.4648 2019.55,-61.5388\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2022.44,-59.5539 2013.93,-53.2367 2016.64,-63.4792 2022.44,-59.5539\"/>\n",
       "</g>\n",
       "<!-- 27 -->\n",
       "<g id=\"node28\" class=\"node\"><title>27</title>\n",
       "<polygon fill=\"#eb9f68\" stroke=\"black\" points=\"2213.5,-53 2083.5,-53 2083.5,-0 2213.5,-0 2213.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"2148.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 873</text>\n",
       "<text text-anchor=\"middle\" x=\"2148.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [706, 167]</text>\n",
       "<text text-anchor=\"middle\" x=\"2148.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 25&#45;&gt;27 -->\n",
       "<g id=\"edge27\" class=\"edge\"><title>25&#45;&gt;27</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2091.28,-88.9485C2099.8,-79.8005 2109.04,-69.8697 2117.57,-60.7126\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2120.28,-62.9402 2124.53,-53.2367 2115.16,-58.1698 2120.28,-62.9402\"/>\n",
       "</g>\n",
       "<!-- 29 -->\n",
       "<g id=\"node30\" class=\"node\"><title>29</title>\n",
       "<polygon fill=\"#eca470\" stroke=\"black\" points=\"2369.5,-53 2231.5,-53 2231.5,-0 2369.5,-0 2369.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"2300.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 1483</text>\n",
       "<text text-anchor=\"middle\" x=\"2300.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [1161, 322]</text>\n",
       "<text text-anchor=\"middle\" x=\"2300.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 28&#45;&gt;29 -->\n",
       "<g id=\"edge29\" class=\"edge\"><title>28&#45;&gt;29</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2300.5,-88.9485C2300.5,-80.7153 2300.5,-71.848 2300.5,-63.4814\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2304,-63.2367 2300.5,-53.2367 2297,-63.2367 2304,-63.2367\"/>\n",
       "</g>\n",
       "<!-- 30 -->\n",
       "<g id=\"node31\" class=\"node\"><title>30</title>\n",
       "<polygon fill=\"#b2d9f5\" stroke=\"black\" points=\"2501,-53 2388,-53 2388,-0 2501,-0 2501,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"2444.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 29</text>\n",
       "<text text-anchor=\"middle\" x=\"2444.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [11, 18]</text>\n",
       "<text text-anchor=\"middle\" x=\"2444.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 1</text>\n",
       "</g>\n",
       "<!-- 28&#45;&gt;30 -->\n",
       "<g id=\"edge30\" class=\"edge\"><title>28&#45;&gt;30</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2350.86,-88.9485C2365.78,-79.1601 2382.06,-68.4756 2396.8,-58.8015\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2398.84,-61.6495 2405.28,-53.2367 2395,-55.7971 2398.84,-61.6495\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.sources.Source at 0x26675b50100>"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import graphviz\n",
    "with open(\"tree.dot\") as f: \n",
    "    dot_graph = f.read() \n",
    "graphviz.Source(dot_graph)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "258af9fe",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Feature importances:\n",
      "[0.         0.         0.         0.22828078 0.51584599 0.05130975\n",
      " 0.         0.         0.20456347 0.        ]\n"
     ]
    }
   ],
   "source": [
    "print(\"Feature importances:\\n{}\".format(tree.feature_importances_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "id": "68182665",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<BarContainer object of 10 artists>"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.barh(X.columns.tolist(),height=0.5,width=tree.feature_importances_,align=\"center\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "id": "ecfd61e6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.8        0.2       ]\n",
      " [0.95573603 0.04426397]\n",
      " [0.95407861 0.04592139]\n",
      " ...\n",
      " [1.         0.        ]\n",
      " [0.95003622 0.04996378]\n",
      " [1.         0.        ]]\n",
      "Accuracy on training set: 0.959\n",
      "Accuracy on test set: 0.933\n"
     ]
    }
   ],
   "source": [
    "#随机森林\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "forest = RandomForestClassifier(n_estimators=10, random_state=2) \n",
    "forest.fit(X_train, y_train)\n",
    "Predict_proba = forest.predict_proba(X_test)\n",
    "print(Predict_proba[:])\n",
    "print(\"Accuracy on training set: {:.3f}\".format(forest.score(X_train, y_train))) \n",
    "print(\"Accuracy on test set: {:.3f}\".format(forest.score(X_test, y_test)))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "id": "0fd59110",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<BarContainer object of 10 artists>"
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAa0AAAD3CAYAAACuNAsSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAuUUlEQVR4nO3dfXzN9eP/8cfZpYszZjMMiTOTq+SqkuQiF1/NVSkVGrI+pVzFbzFbYzZkWR+JJYbPSi4iq2+KPqI+KeWyyVWMiQltBxs7086uzu+Pvu1T2YqxnXN43v/ifd7v1/t53r1vnr3e55z322Cz2WyIiIg4ARd7BxAREblaKi0REXEaKi0REXEaKi0REXEaKi0REXEaKi0REXEabvYOcCswm7PtHUFExKn4+XmVuFwzLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRr6cXEFqJR2yN4R5Gr41CLXWNPeKUTkL6i0KkDW1NH2jiBXwTs6HlRaIg5NlwdFRMRpqLRERMRpXHNpFRYWEhISwuDBg7l48WJ5ZCr2ww8/sGDBAgA+++wz0tPTr3mM37Yzm81ERUXd4IQiIlKRrrm0zGYzmZmZrFq1iurVq5dHpmLNmjVjzJgxALzzzjtYLJZrHuO37fz8/FRaIiJO7pq/iBEZGcmJEycIDw/nwoULWK1WsrKyGD16NPXr12fWrFm88847ADz33HOMHz+ezMxMXn/9dTw9PfH29mbWrFn88MMPrF69mrlz5wJw//33s23bNsLCwsjKyiIrK4uQkBA2bNjAgAED+OGHH5g8eTIrV67kvffe4+OPP8ZgMBAUFMSwYcNKzPqf//yneLs5c+YwefJk1qxZQ79+/Wjfvj0pKSk0atQIX19fdu/ejYeHB4sXLyY3N5eIiAgyMzMBePnll7njjjsICwsjLS0Nq9VKSEgIQUFBZT3uIiJSBtdcWtOmTWPixIn07dsXV1dX7r33Xr777jvmz5/Pv/71L6xWK6dPn8bd3Z3MzEyaNWtG9+7dWbVqFbVr1+btt99m4cKFdO3atdR9dOjQgREjRrBjxw4AunbtSrNmzYiKiiItLY0NGzawcuVKDAYDI0aMoFOnTphMpivG+f127u7uxctzcnLo27cv7dq1o3fv3kyZMoUJEybw1FNPcezYMT7++GM6dOjAkCFDOHHiBFOmTCEhIYEdO3awbt06ALZt23ath05ERK5Tmb/y7ufnx8KFC3n//fcxGAwUFBQA8Nhjj/Hhhx/i4eHBwIEDyczMxGg0Urt2bQDuvvtu/vnPf15RWjabrfjPjRo1KnW/KSkpnDlzhhEjRgBw8eJF0tLSSiytv9KiRQsAqlWrRkBAQPGfrVYrKSkpbN++nY0bNwJw6dIljEYjkZGRREZGYrFY6N+//zXtT0RErl+ZS2vevHkMGjSILl26sG7dOj744AMAgoKCGDFiBAaDgWXLllG1alUsFgsZGRnUqlWLnTt30rBhQzw9PTGbzQCcPn36D1/qMBgMV+zPYDBgs9kwmUw0btyYJUuWYDAYSExMpEmTJqXm/G27kpaXxmQy0b9/f/r168f58+dZu3YtGRkZHDx4kPj4eKxWK126dGHAgAG4uemnbiIiFaXM/+L27t2bmTNnsmjRIvz9/Ys//6latSpNmzaloKAAo9EIwIwZMxg7diwGg4Hq1avzyiuvUK1aNby8vBg0aBABAQHUr1//L/fXpk0bJk2axLJly7jvvvsYPHgweXl5tGrVqngW91fbxcTEXPV7GzVqFBEREaxZswaLxcKYMWPw8/PDbDbz8MMPU6VKFUaOHKnCEhGpYAZbSdMQuaGy9+ywdwS5GrqNk4jD8PPzKnH5TTFV2LJlC4mJiVcsHzZsGD179qz4QH+S26C5vSOIiNwUNNOqAGZztr0jiIg4ldJmWrqNk4iIOA2VloiIOA2VloiIOA2VloiIOA2VloiIOA2VloiIOA2VloiIOI2b4sfFjq5S2iF7R3BeukuFiPyOSqsCZE0dbe8ITss7Oh5UWiLyf3R5UEREnIZdSuvBBx/EarVWyL6ysrJYv349AIsXL2bfvn0Vsl8REbnxbvqZ1pEjR/j8888BePbZZ2nVqpWdE4mISFld9WdaSUlJbNmyBYvFQmZmJqNHjyY2NpaNGzfi6elJXFwcJpOJevXqERcXh7u7O48//jjVq1dnwYIFADRv3pzp06cDEBUVxU8//QTAggULcHV1JSIiguzsbDIzMxk0aBBDhgxhxYoVfPjhh7i4uNC2bVsmT57M2bNniYyMxGq14unpSUxMDP7+/iXmfuuttzh8+DDvvfceycnJBAUFce7cOb744gtyc3Mxm80MGzaMLVu2cPToUSZNmkSPHj3YuHEjiYmJuLi40K5dO0JDQ9mzZw+xsbG4ublRrVo14uLiip8ZJiIi5e+avohx+fJl/vWvf3HhwgUGDRpEYWFhietZrVbWrl1LQUEBvXr1Yu3atfj6+rJgwQJ+/vlnAB599FHat29PWFgY27Zt4/bbb6dPnz706tWL9PR0goODGTJkCElJSURGRtK6dWtWrlxJQUEBsbGxBAcH06VLF7799lvi4uJ47bXXSswyatQoVq9ezRNPPEFycnLx8pycHJYtW8Ynn3xCYmIia9asYceOHbzzzju0b9+e+fPns27dOipXrsxLL73Etm3b+Prrr+nZsychISF8/vnnXLp0SaUlIlKBrqm07r77blxcXKhZsybVqlUjNTW1+LXfP+GkUaNGAGRmZlKtWjV8fX0BGDNmTPE6LVu2BKBmzZrk5uZSs2ZN3n77bTZt2oTRaKSgoACAV155hWXLlhEXF0fr1q2x2WykpKSwaNEilixZgs1mw93d/ZrfeLNmzQDw8vIiICCg+KnKVquVtLQ0Lly4wLPPPgv8WnCnTp1i1KhRvPXWWwwfPpzatWvrUqOISAW7ps+0Dh48CMC5c+ewWCzUrVuXjIwMbDYbhw8f/u+gLr8O6+vry6VLl8jKygJgxowZxV+EMBgMfxh72bJltG7dmri4OHr37l1cgmvWrGH69Om8++67/PDDDyQnJ2MymQgNDWX58uVMnz6d//mf/yn9Dbq4UFRUdMXyP+//9+rXr4+/vz/Lli1j+fLlPPXUU9x1112sX7+eRx55hOXLlxMYGMiaNWuu4qiJiMiNck0zrXPnzjF8+HCys7OZNm0aGRkZPPvss9SrV49q1apdsb6LiwvTpk3jueeew8XFhebNm3PnnXeWOHa3bt2Iiopi/fr1eHt74+rqSl5eHnfccQePPfYYNWrUoHbt2tx1111MnjyZqKgorFYrubm5RERElJq5QYMGpKSklPhk49L4+PgwYsQIgoODKSwspF69ejz00EPk5eURFhZGlSpVcHd3Jzo6+qrHFBGR63fVTy5OSkri+PHjhIaGlnemm072nh32juC8dEcMkVtSaU8uvmnuiDFmzBguXrz4h2VGo5GFCxfaKdF/5TZobu8IIiI3haueaUnZmc3Z9o4gIuJUSptp3fQ/LhYRkZuHSktERJyGSktERJyGSktERJyGSktERJyGSktERJyGSktERJyGSktERJzGTXNHDEdWKe1Q2TbULYxERP5ApVUBsqaOLtN23tHxoNISESl2Qy4P7tixgwkTJtyIof7AbDYTFRV1w8e9Vp999hnp6en2jiEicstz6M+0/Pz8HKK03nnnHSwWi71jiIjc8sp0efDHH39kypQpuLm54erqyqOPPsrJkyd55plnuHDhAt26dWPs2LEcOnSImJgYXF1d8fT0JCYmhqKiIsaPH4+fnx/p6el07tyZCRMmEBYWhs1m4+zZs1y+fJnY2Fg8PT2ZOHEia9asoV+/ftxzzz0cOXIEg8HAm2++idFoZPr06Rw4cICaNWty+vRpFi5cSP369UvMvXbtWlatWkVRURHdu3dn7NixvPvuu2zatImCggK8vLyYP38+H3/8MevWraOoqIjnnnuOH374gcmTJ5OYmEhoaCgWi4Xc3Fxeeukl7r333uv6DyAiIlevTKX1zTff0KJFC8LCwti9ezepqalYrVbefPNNCgsL6dq1K2PHjuXll19m5syZNGvWjM2bNzN79mwmTZrE6dOnWbp0KV5eXgwZMqT4ici33XYbsbGxfPnll8yZM4eXX365eJ85OTn06dOHyMhI/t//+39s3boVT09PsrKyeP/997lw4QK9evUqNfP58+dJSEjgo48+wsPDg9mzZ2OxWMjKyiIxMREXFxdCQkLYv38/ANWqVSt+rEmzZs2Iiori7NmznDt3jsTERM6fP8+JEyfKcvhERKSMynR58LcnCT/zzDOsWLECV1dXAgMD8fDwoHLlyri5/dqFGRkZNGvWDIC7776bo0ePAtC0adPipxO3atWKH3/8EYAOHToA0KZNm+Jlv9e8+a/PpfL398dqtXL8+HFat24N/Pq0YZPJVGrmU6dOERgYSKVKlXBxcSE8PByj0Yi7uzsTJ04kPDycn3/+mYKCAgAaNWp0xRiBgYEMHTqUiRMnMn36dIqKispy+EREpIzKVFpbtmyhXbt2vP322/Tu3ZuEhAQMBsMV69WqVYvDhw8DsGvXLho2bAhAamoqv/zyC4WFhezbt4/GjRsDFM+4vvvuOwIDA68Y78/7CAwMZO/evQBcvHjxL2c+DRo04Pjx4+Tl5QEwbtw4du7cyebNm3n99deJjIykqKiI3x4v5uLy30NjMBiw2WwcOXKEnJwcFi9ezOzZs4mJibmKoyUiIjdKmS4PtmzZkpdeeon58+fj4uJCcHAw+/btu2K9GTNmEBMTg81mw9XVlVmzZgHg7u7O+PHjOXfuHL1796Zp06YAbN26lS1btlBUVMQrr7zytzm6du3K1q1befLJJ6lZsyaVKlXC3d29xHV9fHz4xz/+wVNPPYXBYKBbt27ceeedVK5cmYEDB+Lh4YGfnx8ZGRlXbNumTRsmTZrEwoUL2blzJx9++CHu7u6MGzfuWg6biIhcpwp/cvFPP/1U/OWK3wsLCyMoKIjOnTtf9VipqakcPnyYPn36kJmZSd++ffniiy/w8PC40bGvy6k+7cu0nXd0PLkNmt/gNCIijq+0Jxc79Y+L/f39iYuL4+2336awsJDQ0FC++uorEhMTr1h32LBh9OzZs+JD8n8/Ei4Ln1o3NoiIiJOr8JnWrchszrZ3BBERp1LaTMuhf1wsIiLyeyotERFxGiotERFxGiotERFxGiotERFxGiotERFxGiotERFxGiotERFxGiotERFxGk59GydnUSntkL0jiIi9+dQi11jT3imcnkqrAmRNHW3vCCJiZ97R8aDSum66PCgiIk7jliyt+++/H4CZM2dy5syZEteZP38+q1atqshYIiLyN27py4MRERH2jiAiItfAYUorPz+f8PBwTp06RWFhIU8//TSrVq2iadOmHD16FIvFwrx586hXrx7Lly/n448/xmAwEBQUxLBhw0odd+3ataxatYqioiK6d+/O2LFji18LDg4mKioKb29vwsLCyM7OxmazERsbW7zOyZMnmThxIjNnziQnJ4fY2Fjc3NyoVq0acXFxGI3Gcj0uIiLyXw5TWu+99x41atRgzpw5WCwWBg4ciIeHB61atSIiIoK5c+fyySef8OCDD7JhwwZWrlyJwWBgxIgRdOrUCZPJdMWY58+fJyEhgY8++ggPDw9mz55NTk7OFestXLiQBx98kMGDB/Ptt9+yb98+AH788UfWrVvHa6+9RsOGDYmNjaVnz56EhITw+eefc+nSJZWWiEgFcpjPtFJTU7n77rsBMBqNBAQEkJaWRvPmvz5uvk6dOlitVlJSUjhz5gwjRoxg+PDhZGVlkZaWVuKYp06dIjAwkEqVKuHi4kJ4eDhVq1a9Yr0ff/yRNm3aAHDffffRv39/ALZu3Upubi6urq4AjBo1igsXLjB8+HA+/fRT3NwcpvNFRG4JDlNaAQEB7N69GwCLxUJKSgr169e/Yj2TyUTjxo155513WL58OQMHDqRJkyYljtmgQQOOHz9OXl4eAOPGjSM9Pb3Efe/fvx+AXbt2MWfOHACGDx9OeHg4kyZNorCwkPXr1/PII4+wfPlyAgMDWbNmzQ157yIicnUcZqrw+OOPExkZyeDBg7FarYwZM4akpKQr1mvatCn33XcfgwcPJi8vj1atWlG7du0Sx/Tx8eEf//gHTz31FAaDgW7dupW47qhRowgPD+ejjz4CYNasWXz44YcAdOzYkU8//ZSEhATuu+8+wsLCqFKlCu7u7kRHR9+4AyAiIn/LYLPZbPYOcbPL3rPD3hFExN50R4xr4ufnVeJyh5lpXY8tW7aQmJh4xfJhw4bRs2fPig/0J7kNmts7gojITUEzrQpgNmfbO4KIiFMpbablMF/EEBER+TsqLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRo3xY+LHV2ltEP2jiBy89EdJm5JKq0KkDV1tL0jiNx0vKPjQaV1y9HlQRERcRrlVlpJSUnExcWV1/DXzWq18uCDD9o7hoiIXAPNtERExGmU62dae/fuZfjw4VgsFsaOHUtcXBwNGzbEw8ODqKgoXnrpJSwWC4WFhYwfP56cnBy++eYbpk6dyqJFi9i7dy8LFy7kf//3fzl79iwmk4mEhATc3NyoV68er776Kjk5OURERJCZmQnAyy+/zB133FFinpycHEJDQ7l06RINGjQoXr5z504WLFgAQG5uLrGxsezcuZMTJ04wefJkCgsLefjhh1m5cmVx5tzcXF566SXuvffe8jyEIiLyO+VaWpUrV2bx4sVcuHCBQYMGUVRUxAsvvEDz5s2JjY2lY8eODB8+nPT0dAYPHszHH3/MvHnzANi9ezfnzp2joKCAL774grFjxzJv3jxGjBhBnz59+PDDD7FYLCxatIgOHTowZMgQTpw4wZQpU1i1alWJeT744AOaNGnChAkT+P7779mx49fnXB09epQ5c+ZQu3Zt3nrrLT799FOCg4MZOHAgoaGhfPXVV9x77738/PPPnDt3jsTERM6fP8+JEyfK8/CJiMiflGtptWvXDoPBgK+vL15eXpw8eZJGjRoBkJqaSr9+/QCoXbs2RqORy5cv06hRI/bt24ebmxutW7dm165dnD17loCAAKZMmcKiRYtYtWoVJpOJHj16kJKSwvbt29m4cSMAly5dKjXP0aNHeeCBBwC46667cHNzK97/zJkzqVKlCunp6bRt2xaj0cjdd9/N119/TVJSEi+88AKBgYEMHTqUiRMnUlBQQHBwcHkePhER+ZNyLa39+/cDYDabuXz5MjVq1MDF5deP0QICAti9ezfNmzcnPT2dS5cu4e3tTY8ePZgzZw7du3fntttuY+7cuXTs2BGA9957j7Fjx+Lr68vUqVP57LPPMJlM9O/fn379+nH+/HnWrl1bah6TycTevXvp0aMHhw4doqCgAPj1kuLmzZsxGo1MnjyZ3x4x9vjjj5OQkEBmZiZNmzblyJEj5OTksHjxYjIyMnjyySfp1q1beR5CERH5nXL9IkZubi7Dhg3j+eefJzo6GoPBUPzac889x/bt2xk6dCgvvPAC0dHRuLm50a1bN5KTk+nUqRP33nsvhw4dolevXgC0atWKp59+mmHDhmE2m+natSujRo1i48aNBAcH88wzzxAYGFhqnqFDhxZfilyxYgXu7u4ADBgwgMcff5wnn3ySnJwcMjIygF9nYydPniyeETZs2JCdO3fy2GOPMX78eMaNG1deh05EREqgJxf/haKiIgYPHszSpUsxGo1lHudUn/Y3MJWIwK8/Ls5t0NzeMaSclPbk4pvyjhhRUVGkpqZesTwhIYFKlSpd1RinTp1izJgxPPHEE9dVWPB/v9wXkRvLp5a9E4gdaKZVAczmbHtHEBFxKqXNtPTjYhERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRo35R0xHE2ltEP2jiBSdj61yDXWtHcKEUClVSGypo62dwSRMvOOjgeVljgIXR4UERGn4ZSldeTIEXbt2lUuY8+cOZMzZ86Uy9giInJ9nLK0Nm3axLFjx8pl7IiICOrWrVsuY4uIyPVxqM+0cnNzmTJlCmfOnCE/P5+wsDBWrFhBdnY2mZmZDBo0iO7du/PBBx/g7u5OixYtyM3NZe7cubi6unLbbbcRHR1NYWEhkyZNIiMjA39/f3bt2sXXX3/NoUOHiImJwdXVFU9PT2JiYigqKuL555/H29ubzp07s3XrVqKioqhVqxYRERFkZmYCvz7d+I477iAsLIy0tDSsVishISEEBQXZ+aiJiNw6HKq0Vq9eTb169Zg7dy4pKSls27aNPn360KtXL9LT0wkODmbIkCE88sgj1KxZkzvvvJPevXuzcuVKfH19ef311/nggw/45ZdfqF+/Pm+88Qapqan07dsX+LV4Zs6cSbNmzdi8eTOzZ89m0qRJmM1m1q1bh4eHB1u3bgXgrbfeokOHDgwZMoQTJ04wZcoUEhIS2LFjB+vWrQNg27ZtdjtWIiK3IocqrePHj9O5c2cAmjRpQvXq1XnttdfYtGkTRqORgoKCP6x/4cIFMjIyePHFF4FfZ2r3338/Fy5cKB4nICAAHx8fADIyMmjWrBkAd999N6+99hoA9evXx8PD4w9jp6SksH37djZu3AjApUuXMBqNREZGEhkZicVioX///uVzIEREpEQOVVoBAQHs37+fHj16cOrUKWJjY+nYsSNDhgxh+/btfPnllwAYDAaKioqoUaMGderU4c0338TLy4stW7ZQpUoVUlNTSU5OpkePHqSlpRVf4qtVqxaHDx+madOm7Nq1i4YNGwLg4nLlR3smk4n+/fvTr18/zp8/z9q1a8nIyODgwYPEx8djtVrp0qULAwYMwM3NoQ6jiMhNy6H+tX3yyScJDw/nqaeeorCwkO7du/POO++wfv16vL29cXV1JS8vj5YtW/Lqq68SEBBAREQEzz77LDabjapVq/Lqq6/Spk0bwsLCGDp0KHXr1sXT0xOAGTNmEBMTg81mw9XVlVmzZpWaZdSoUURERLBmzRosFgtjxozBz88Ps9nMww8/TJUqVRg5cqQKS0SkAhlsNpvN3iFutO+++47Lly/TqVMnTpw4wTPPPMPmzZvtludUn/Z227fI9fKOjie3QXN7x5BbjJ+fV4nLb8rSMpvNTJw4kfz8fAoKChg3blzxZ1z2kL1nh932LXLddBsnsYNbqrQcjdmcbe8IIiJOpbTScsofF4uIyK1JpSUiIk5DpSUiIk5DpSUiIk5DpSUiIk5DpSUiIk5DpSUiIk5DpSUiIk5DN86rAJXSDtk7gohIxSqnO6motCpA1tTR9o4gIlKhvKPjoRxKS5cHRUTEadyw0jKbzURFRd2o4UqUlJTEli1bAHj33XfLZR8TJkwgLy/vD8u2bt1KWFhYuexPRESu3g0rLT8/v3IvrYEDB9K9e3cAFi5cWC77mDt37hVPMRYREcfwt59pJSUlcfz4cUJDQ7FarTz00EPUq1ePpk2bcvToUSwWC/PmzcNmszFx4kTWrFnDp59+ysKFC6lRowbVqlWja9eu1KtXj9WrVzN37lwA7r//frZt28bZs2eJjIzEarXi6elJTEwM/v7+JWaZP38+NWvWJCsri4sXLxIVFUVERATTpk3j5MmTFBUV8eKLL3LvvffSr18/2rdvT0pKCo0aNcLX15fdu3fj4eHB4sWLcXd3L3EfDz74IBs3buSnn34iPDycypUrU7lyZapXrw5AWFgYaWlpWK1WQkJCCAoKKuuxFxGRa1TmmVarVq1ITEzk/vvv55NPPilenp+fz+zZs0lMTGTZsmXk5OT85TixsbEEBwezfPlyQkJCiIuL+9t9P//881SvXp2oqCjWrl1LjRo1WLFiBW+++SbR0dEA5OTk0LdvX1asWMHu3btp27YtK1asID8/n2PHjv3tPubNm8e4ceNITEykTZs2AFgsFnbs2MGCBQtISEigsLDwb8cREZEb55q+Pfj7R281b/7rk0zr1KnDuXPnipdfvHgRb29vatSoAcA999zzl2OlpKSwaNEilixZgs1mK3UGVJqUlBT27NnDvn37ACgoKCAzMxOAFi1aAFCtWjUCAgKK/2y1Wv923KNHj9KqVSsA2rZty/HjxzEajURGRhIZGYnFYqF///7XlFVERK7P35aWp6cnZrMZgIMHD/7tgL6+vly+fJlz585Rs2ZNDhw4QLdu3f4wzunTp7l48SIAJpOJkSNH0rZtW1JTU9m1a9dVBf+t9EwmE3Xq1GHUqFHk5uaycOHC4kt5BoPhqsYqiclkIjk5mc6dO3PgwAEAMjIyOHjwIPHx8VitVrp06cKAAQNwc9MvB0REKsLf/mv7wAMPsGrVKgYPHkyLFi2oWrXqX65vMBiYPn06zz//PFWrViU3NxeAli1b4uXlxaBBgwgICKB+/foATJ48maioKKxWK7m5uURERFxV8ICAAEJDQ5k1axYvv/wyTz31FBaLhSFDhuDicv3fL5k2bRoTJkxg6dKl+Pj44OnpiZ+fH2azmYcffpgqVaowcuRIFZaISAUy2H5/za8cxMXFYTKZGDhwYHnuxqFl79lh7wgiIhXrOu+I4efnVeJyh5wmjBkzpvjy4W+MRuMN+5r7vn37mDNnzhXLH3roIYYMGXJD9vF7uQ2a3/AxRURuReU+0xIwm7PtHUFExKmUNtPSbZxERMRpqLRERMRpqLRERMRpqLRERMRpqLRERMRpqLRERMRpqLRERMRpqLRERMRpOOQdMW42ldIO2TuCiDia67zN0a1KpVUBsqaOtncEEXEw3tHxoNK6Zg55edBqtbJ27dpSX9+1axeHDx8u9fWkpKS/fJjk/PnzWbVq1XVlFBGRiueQpWU2m/+ytNatW0dGRkYFJhIREUfgkJcH33rrLY4dO8aCBQvYv38/FouFwsJCxo8fj5eXF1999RUHDx6kcePGfP7552zatImCggK8vLyYP3/+Ne1r9uzZ7NmzB4C+ffsyfPhwTp48SVhYGG5ubtSrV4/Tp0+zfPlywsLCSEtLw2q1EhISQlBQUHm8fRERKYVDltaoUaNISUkhJyeHjh07Mnz4cNLT0xk8eDCbN2/mgQceICgoiDp16pCVlUViYiIuLi6EhISwf//+q97PF198wU8//cSaNWsoKChgyJAhdOjQgTfeeINRo0bRpUsX1qxZw+nTp7FYLOzYsYN169YBsG3btvJ6+yIiUgqHLK3fpKam0q9fPwBq166N0WjkwoULxa+7uLjg7u7OxIkTqVKlCj///DMFBQXXNH779u0xGAy4u7tz1113kZqaSmpqKm3atAGgXbt2rF+/HqPRSGRkJJGRkVgsFvr3739j36yIiPwth/xMy8XFhaKiIgICAti9ezcA6enpXLp0CW9vbwwGAzabjcOHD7N582Zef/11IiMjKSoq4loeDxYQEFB8aTA/P5/k5GRuv/12mjRpQnJyMgDff/89ABkZGRw8eJD4+HgWL17MnDlzrqkgRUTk+jnkTMvX15f8/Hyys7M5efIk//73v8nNzSU6Oho3Nzfuuusu4uLi+Oc//0nlypUZOHAgHh4e+Pn5XdMXNLp168bOnTt54oknyM/Pp3fv3rRo0YLQ0FDCw8NZtmwZXl5euLm54efnh9ls5uGHH6ZKlSqMHDkSNzeHPHwiIjctPbm4BB999BF33XUXt99+O2vXruW7777jlVdeKfN4p/q0v4HpRORm4B0dT26D5vaO4bBKe3LxTT1VGDNmDBcvXvzDMqPRyMKFC/9yO39/fyZMmEDlypVxcXFh1qxZ15XDOzr+urYXkZuQTy17J3BKmmlVALM5294RREScSmkzLYf8IoaIiEhJVFoiIuI0VFoiIuI0VFoiIuI0VFoiIuI0VFoiIuI0VFoiIuI0VFoiIuI0VFoiIuI0burbODmKSmmH7B3BcfjUItdY094pRMRJqbQqQNbU0faO4DC8o+NBpSUiZaTLgyXYunUrYWFh9o4hIiJ/otISERGncdNcHszNzWXSpElkZGTg7+/Prl27WLp0KTNmzADA29ubWbNmcejQIRISEnB3d+enn34iKCiI559/ntTUVMLDw6lcuTKVK1emevXqAGzcuJHExERcXFxo164doaGhzJ8/n+TkZC5fvszMmTMJCAiw51sXEbll3DQzrffee4/69euzevVqxowZw/nz54mMjGTatGksX76czp07s2TJEgDOnDnD/Pnzee+994qXzZs3j3HjxpGYmEibNm0AyMrKYv78+SQmJrJq1SrS09PZtm0bACaTidWrV6uwREQq0E0z00pNTaVz584ABAQE4OPjQ2pqKtOnTwcgPz+fRo0aAdCkSRPc3Nxwc3OjUqVKABw9epRWrVoB0LZtW44fP05aWhoXLlzg2WefBSAnJ4dTp04BFI8lIiIV56YprSZNmpCcnEyPHj1IS0sjMzOT5s2bExsbS926ddmzZw9msxkAg8FwxfYmk4nk5GQ6d+7MgQMHAKhfvz7+/v4sW7YMd3d3kpKSaNasGZs3b8bF5aaZpIqIOI2bprQee+wxwsLCGDp0KHXr1sXT05OoqCgmT55MYWEhADNnziQjI6PE7adNm8aECRNYunQpPj4+eHp64uPjw4gRIwgODqawsJB69erx0EMPVeTbEhGR3zHYbDabvUPcCN999x2XL1+mU6dOnDhxgmeeeYbNmzfbOxYAp/q0t3cEh+EdHU9ug+b2jiEiDs7Pz6vE5TdNaZnNZiZOnEh+fj4FBQWMGzeu+DMue8ves8PeERyH7oghIlfhpi8tR2Y2Z9s7goiIUymttPRtAhERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRoqLRERcRo3zQ1zHVmltEP2jiAi10q3HHNIKq0KkDV1tL0jiMg18o6OB5WWw9HlQRERcRoqLRERcRoOcXnQYrEQERFBdnY2mZmZDBo0iJYtWzJ9+nSqVq2Kr68vnp6ezJ49m+XLl/Pxxx9jMBgICgpi2LBhpY7brVs3TCYTJpOJQYMGMXv2bIqKirh06RIvv/wybdu2pVevXrRt25Yff/wRX19f5s+fT35+PpMmTSIjIwN/f3927drF119/zZEjR5gxYwYA3t7ezJo1Cy+vku9ELCIiN55DlNbJkyfp06cPvXr1Ij09neDgYKpWrcqrr75KYGAgc+fOJT09nWPHjrFhwwZWrlyJwWBgxIgRdOrUCZPJVOK4Z8+eJSkpiRo1arBhwwYmT57MHXfcwfr160lKSqJt27acOnWKt99+G39/f5588kn279/P999/T/369XnjjTdITU2lb9++AERGRjJr1iwaN27M2rVrWbJkCRMmTKjIQyUicktziNKqWbMmb7/9Nps2bcJoNFJQUEBGRgaBgYEAtGvXjg0bNpCSksKZM2cYMWIEABcvXiQtLa3U0qpRowY1atQAoFatWrz55ptUqlSJnJwcjEZj8Tr+/v4A+Pv7Y7VaSU1NLX6AZEBAAD4+PgCkpqYyffp0APLz82nUqFH5HBARESmRQ5TWsmXLaN26NUOGDGH79u18+eWX1KlTh2PHjtG4cWO+//57AEwmE40bN2bJkiUYDAYSExNp0qRJqeO6uPz3I7uZM2cSFxdHQEAAb7zxBqdPnwbAYDBcsV2TJk1ITk6mR48epKWlkZmZCUCjRo2IjY2lbt267NmzB7PZfCMPg4iI/A2HKK1u3boRFRXF+vXr8fb2xtXVlalTpxIeHk6VKlVwd3endu3aNG3alPvuu4/BgweTl5dHq1atqF279lXto3///rzwwgv4+vpSp06d4iIqyWOPPUZYWBhDhw6lbt26eHp6AhAVFcXkyZMpLCwEfi1CERGpOAabzWazd4iSrFixgoceeggfHx/mzp2Lu7s7Y8aMqZB9f/fdd1y+fJlOnTpx4sQJnnnmGTZv3lzm8U71aX8D04lIRfCOjie3QXN7x7hl+fmV/CU3h5hplcTX15eRI0dSpUoVvLy8mD17donrbdmyhcTExCuWDxs2jJ49e5Zp37fddhsTJ05kwYIFFBQUMHXq1DKN8xvv6Pjr2l5E7MCnlr0TSAkcdqZ1MzGbs+0dQUTEqZQ209KPi0VExGmotERExGmotERExGmotERExGmotERExGmotERExGmotERExGmotERExGnox8UiIuI0NNMSERGnodISERGnodISERGnodISERGnodISERGnodISERGnodISERGn4bBPLnZERUVFREVFceTIETw8PJgxYwa333578euff/458fHxuLm58eijj/L444+Xus3JkycJCwvDYDAQGBjItGnTcHG5sf8PUZa8+fn5hIeHc/r0afLy8nj++efp3r07Bw8eZNSoUTRs2BCAwYMHExQUZPe8AA8//DBeXr8+MK5+/fq88sor5X58y5I1KSmJDz74AACr1coPP/zAtm3bOHXqlN2PLcAvv/zC008/zcyZMwkICHDoc7ekvPY6d8uSFexz3pY1rz3P3SvY5Kr9+9//tk2ePNlms9lsycnJtlGjRhW/lpeXZ+vRo4ctKyvLZrVabQMHDrRlZGSUus1zzz1n2759u81ms9kiIyNtmzZtcoi877//vm3GjBk2m81mu3Dhgq1Lly42m81mW7NmjW3p0qU3POP15s3NzbUNGDDgirHK+/iWJevvRUVF2VavXm2z2ex/bG02m23fvn22Rx55xNaxY0fbsWPH/nIbe5+7peW117lblqz2Om/Lmvf3Kvrc/TNdHrwGe/bs4YEHHgCgdevWHDhwoPi11NRUGjRoQPXq1fHw8KBdu3bs3r271G0OHjzIPffcA0Dnzp355ptvHCJv7969GT9+fPF6rq6uABw4cID//Oc/DB06lPDwcCwWi0PkPXz4ML/88gsjR45k2LBh7N27Fyj/41uWrL/Zv38/x44d44knngDsf2wB8vLyiI+Px2Qy/e029j53S8trr3O3LFntdd6WNe9v7HHu/plK6xpYLBaMRmPx311dXSkoKCh+7bepPkDVqlWxWCylbmOz2TAYDMXrZmdnO0TeqlWrYjQasVgsjBs3jhdffBGAVq1aMWnSJFasWMFtt91GfHy8Q+StVKkSISEhLF26lOnTpxMaGlohx7csWX+zaNEiRo8eXfx3ex9bgHbt2uHv739V29j73C0tr73O3bJktdd5W9a8v7HHuftnKq1rYDQaycnJKf57UVERbm5uJb6Wk5ODl5dXqdv8/jp1Tk4O1apVc4i8AGfPnmXYsGEMGDCAfv36AdCzZ09atmxZ/OdDhw45RN5GjRrRv39/DAYDjRo1wtvbG7PZXO7Ht6zH9tKlSxw/fpwOHToUv27vY3ut29j73P0r9jh3y5LVXudtWfOC/c7dP1NpXYO2bduydetWAPbu3UuTJk2KXwsICODkyZNkZWWRl5fH7t27adOmTanbNG/enB07dgCwdetW2rdv7xB5z507x8iRI3nppZd47LHHitcPCQlh3759AHz77be0aNHCIfK+//77zJ49G4D09HQsFgt+fn7lfnzLkhVg165ddOzY8Q9j2fvYXus29j53S2Ovc7csWe113pY1L9jv3P0z3eX9Gvz2rZuUlBRsNhuzZs3i0KFDXL58mSeeeKL4G2M2m41HH32UoUOHlrhNQEAAP/74I5GRkeTn52MymZgxY0bxNXh75p0xYwYbN278w/XshIQEUlNTiYmJwd3dnZo1axITE/OHSwz2ypuXl8eUKVM4c+YMBoOB0NBQ2rZtW+7HtyxZAZYsWYKbmxsjRowoHuvgwYN2P7a/CQ4OJioq6g/fHnTEc7ekvPY6d8uS1V7nbVnzgv3O3T9TaYmIiNPQ5UEREXEaKi0REXEaKi0REXEaKi0REXEaKi0REXEaKi0REXEaKi0REXEa/x+fiATDr2QHcgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.barh(X.columns.tolist(),height=0.5,width=forest.feature_importances_,align=\"center\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "id": "baf14e95",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.87042249 0.12957751]\n",
      " [0.957535   0.042465  ]\n",
      " [0.9548853  0.0451147 ]\n",
      " ...\n",
      " [0.91902328 0.08097672]\n",
      " [0.96209947 0.03790053]\n",
      " [0.91587013 0.08412987]]\n",
      "Accuracy on training set: 0.939\n",
      "Accuracy on test set: 0.938\n"
     ]
    }
   ],
   "source": [
    "#梯度提升回归树\n",
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    "gbrt = GradientBoostingClassifier(random_state=0) \n",
    "gbrt.fit(X_train, y_train)\n",
    "Predict_proba = gbrt.predict_proba(X_test)\n",
    "print(Predict_proba[:])\n",
    "print(\"Accuracy on training set: {:.3f}\".format(gbrt.score(X_train, y_train)))\n",
    "print(\"Accuracy on test set: {:.3f}\".format(gbrt.score(X_test, y_test)))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "id": "d9a67949",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<BarContainer object of 10 artists>"
      ]
     },
     "execution_count": 140,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.barh(X.columns.tolist(),height=0.5,width=gbrt.feature_importances_,align=\"center\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "id": "3d0ecbab",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.78265355 0.21734645]\n",
      " [0.94880271 0.05119729]\n",
      " [0.94831907 0.05168093]\n",
      " ...\n",
      " [0.93243558 0.06756442]\n",
      " [0.95763756 0.04236244]\n",
      " [0.90532664 0.09467336]]\n",
      "0.938297350343474\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\DELL\\anaconda3\\lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:549: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "  self.n_iter_ = _check_optimize_result(\"lbfgs\", opt_res, self.max_iter)\n"
     ]
    }
   ],
   "source": [
    "#多层感知机\n",
    "from sklearn.neural_network import MLPClassifier\n",
    "mlp = MLPClassifier(solver='lbfgs', activation='relu',alpha=0.1,random_state=0,hidden_layer_sizes=[10,10]).fit(X_train, y_train)\n",
    "Predict = mlp.predict(X_test)\n",
    "Predict_proba = mlp.predict_proba(X_test)\n",
    "print(Predict_proba[:])\n",
    "Score = accuracy_score(y_test, Predict)\n",
    "print(Score)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "id": "03cdf9e7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.colorbar.Colorbar at 0x26676504370>"
      ]
     },
     "execution_count": 142,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(20, 5))\n",
    "plt.imshow(mlp.coefs_[0], interpolation='none', cmap='viridis')\n",
    "plt.yticks(range(10), X.columns.tolist()) \n",
    "plt.xlabel(\"Columns in weight matrix\") \n",
    "plt.ylabel(\"Input feature\") \n",
    "plt.colorbar()\n",
    "# 显示了连接输入和第一个隐层之间的权重。图中的行对应 10个输入特征，列对应 10个隐单元。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "id": "f4e6b864",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 原始数据预处理之缩放\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "id": "19592847",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train = X_train[X_train.columns.tolist()].astype(float)\n",
    "X_test = X_test[X_test.columns.tolist()].astype(float)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "id": "04cd8bef",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "StandardScaler()"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scaler.fit(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "id": "69e7b0bf",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 变换数据\n",
    "X_train_scaled = scaler.transform(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "id": "dfad8808",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_test_scaled = scaler.transform(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "id": "3359189c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9381286800785084\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\DELL\\anaconda3\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but MLPClassifier was fitted without feature names\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "mlp1 = MLPClassifier(solver='lbfgs', random_state=0,hidden_layer_sizes=[10]).fit(X_train_scaled, y_train)\n",
    "Predict = mlp1.predict(X_test)\n",
    "Score = accuracy_score(y_test, Predict)\n",
    "print(Score)\n",
    "#缩放之后的结果也没啥大不了的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "id": "ca49000b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob\n",
       "0   163968         4605   NaN\n",
       "1   360576         1581   NaN\n",
       "2    98688         1964   NaN\n",
       "3    98688         3645   NaN\n",
       "4   295296         3361   NaN"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#实践预测\n",
    "df_test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "id": "c1d1ee6d",
   "metadata": {},
   "outputs": [],
   "source": [
    "#特征构建\n",
    "df_test = pd.merge(df_test,user_info,on=\"user_id\",how=\"left\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "id": "f049edc1",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test = pd.merge(df_test,total_logs_temp,on=[\"user_id\",\"merchant_id\"],how=\"left\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "id": "070d4857",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test = pd.merge(df_test,unique_item_ids_temp1,on=[\"user_id\",\"merchant_id\"],how=\"left\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "id": "c9c53915",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test = pd.merge(df_test,categories_temp1,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "id": "eaab8868",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test = pd.merge(df_test,browse_days_temp1,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "id": "421f9ec7",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test = pd.merge(df_test,four_features,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "id": "280fcf9d",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test = df_test.fillna(method='bfill')\n",
    "df_test = df_test.fillna(method='ffill')\n",
    "# 缺失值向后填充\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "id": "2260041b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  \n",
       "0                0  \n",
       "1                0  \n",
       "2                0  \n",
       "3                0  \n",
       "4                2  \n",
       "5                1  \n",
       "6                0  \n",
       "7                0  \n",
       "8                0  \n",
       "9                0  "
      ]
     },
     "execution_count": 157,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "id": "e22f4fd4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id                 0\n",
       "merchant_id             0\n",
       "prob               261477\n",
       "age_range               0\n",
       "gender                  0\n",
       "total_logs              0\n",
       "unique_item_ids         0\n",
       "categories              0\n",
       "browse_days             0\n",
       "one_clicks              0\n",
       "shopping_carts          0\n",
       "purchase_times          0\n",
       "favourite_times         0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.isnull().sum(axis=0)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "id": "f7c6bc03",
   "metadata": {},
   "outputs": [],
   "source": [
    "#模型预测\n",
    "X1 = df_test.drop(['user_id','merchant_id','prob'],axis = 1)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "id": "e0c1477d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   age_range  gender  total_logs  unique_item_ids  categories  browse_days  \\\n",
       "0        2.0     0.0           2                1           1            1   \n",
       "1        2.0     0.0          10                9           4            1   \n",
       "2        6.0     0.0           6                1           1            1   \n",
       "3        6.0     0.0          11                1           1            1   \n",
       "4        2.0     1.0          50                8           4            5   \n",
       "5        2.0     0.0          11                2           1            4   \n",
       "6        5.0     1.0          13                6           1            1   \n",
       "7        3.0     1.0           2                1           1            1   \n",
       "8        3.0     1.0           3                2           1            1   \n",
       "9        3.0     1.0           7                4           3            1   \n",
       "\n",
       "   one_clicks  shopping_carts  purchase_times  favourite_times  \n",
       "0           1               0               1                0  \n",
       "1           5               0               5                0  \n",
       "2           5               0               1                0  \n",
       "3          10               0               1                0  \n",
       "4          47               0               1                2  \n",
       "5           9               0               1                1  \n",
       "6          11               0               2                0  \n",
       "7           1               0               1                0  \n",
       "8           2               0               1                0  \n",
       "9           6               0               1                0  "
      ]
     },
     "execution_count": 160,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X1.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "id": "35936464",
   "metadata": {},
   "outputs": [],
   "source": [
    "#逻辑斯特模型\n",
    "Predict_proba = Logit.predict_proba(X1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "id": "25da78ba",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test[\"Logit_prob\"] = Predict_proba[:,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "id": "79feb426",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.95432087, 0.04567913],\n",
       "       [0.87876884, 0.12123116],\n",
       "       [0.94574288, 0.05425712],\n",
       "       [0.94679761, 0.05320239],\n",
       "       [0.9415685 , 0.0584315 ],\n",
       "       [0.94633622, 0.05366378],\n",
       "       [0.94157686, 0.05842314],\n",
       "       [0.95643288, 0.04356712],\n",
       "       [0.95611093, 0.04388907],\n",
       "       [0.9494901 , 0.0505099 ]])"
      ]
     },
     "execution_count": 163,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Predict_proba[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "id": "93b9930c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "      <th>Logit_prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.045679</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.121231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.054257</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.053202</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.058431</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.053664</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.058423</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043567</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.050510</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  Logit_prob  \n",
       "0                0    0.045679  \n",
       "1                0    0.121231  \n",
       "2                0    0.054257  \n",
       "3                0    0.053202  \n",
       "4                2    0.058431  \n",
       "5                1    0.053664  \n",
       "6                0    0.058423  \n",
       "7                0    0.043567  \n",
       "8                0    0.043889  \n",
       "9                0    0.050510  "
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "id": "e4a32a13",
   "metadata": {},
   "outputs": [],
   "source": [
    "#KNN\n",
    "Predict_proba = clf.predict_proba(X1)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "id": "5c490212",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test[\"Clf_prob\"] = Predict_proba[:,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "id": "dccf4ff0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.968, 0.032],\n",
       "       [0.901, 0.099],\n",
       "       [0.956, 0.044],\n",
       "       [0.949, 0.051],\n",
       "       [0.896, 0.104],\n",
       "       [0.954, 0.046],\n",
       "       [0.923, 0.077],\n",
       "       [0.958, 0.042],\n",
       "       [0.96 , 0.04 ],\n",
       "       [0.951, 0.049]])"
      ]
     },
     "execution_count": 172,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Predict_proba[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "id": "9e11c0c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "      <th>Logit_prob</th>\n",
       "      <th>Tree_prob</th>\n",
       "      <th>Clf_prob</th>\n",
       "      <th>Forest_prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.045679</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.032</td>\n",
       "      <td>0.032803</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.121231</td>\n",
       "      <td>0.102396</td>\n",
       "      <td>0.099</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.054257</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.044</td>\n",
       "      <td>0.010370</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.053202</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.051</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.058431</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.104</td>\n",
       "      <td>0.100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.053664</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.046</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.058423</td>\n",
       "      <td>0.089106</td>\n",
       "      <td>0.077</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043567</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.042</td>\n",
       "      <td>0.039958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043889</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.040</td>\n",
       "      <td>0.046536</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.050510</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.049</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  Logit_prob  Tree_prob  Clf_prob  Forest_prob  \n",
       "0                0    0.045679   0.041629     0.032     0.032803  \n",
       "1                0    0.121231   0.102396     0.099     0.000000  \n",
       "2                0    0.054257   0.041629     0.044     0.010370  \n",
       "3                0    0.053202   0.041629     0.051     0.000000  \n",
       "4                2    0.058431   0.068542     0.104     0.100000  \n",
       "5                1    0.053664   0.047680     0.046     0.000000  \n",
       "6                0    0.058423   0.089106     0.077     0.000000  \n",
       "7                0    0.043567   0.041629     0.042     0.039958  \n",
       "8                0    0.043889   0.047680     0.040     0.046536  \n",
       "9                0    0.050510   0.068542     0.049     0.000000  "
      ]
     },
     "execution_count": 181,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "id": "39caac14",
   "metadata": {},
   "outputs": [],
   "source": [
    "#决策树\n",
    "Predict_proba = tree.predict_proba(X1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "id": "5be7a250",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test[\"Tree_prob\"] = Predict_proba[:,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "id": "39762e4b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.95837129, 0.04162871],\n",
       "       [0.89760368, 0.10239632],\n",
       "       [0.95837129, 0.04162871],\n",
       "       [0.95837129, 0.04162871],\n",
       "       [0.93145807, 0.06854193],\n",
       "       [0.95232015, 0.04767985],\n",
       "       [0.91089364, 0.08910636],\n",
       "       [0.95837129, 0.04162871],\n",
       "       [0.95232015, 0.04767985],\n",
       "       [0.93145807, 0.06854193]])"
      ]
     },
     "execution_count": 175,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Predict_proba[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "id": "87185312",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "      <th>Logit_prob</th>\n",
       "      <th>Tree_prob</th>\n",
       "      <th>Clf_prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.045679</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.032</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.121231</td>\n",
       "      <td>0.102396</td>\n",
       "      <td>0.099</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.054257</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.044</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.053202</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.051</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.058431</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.053664</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.046</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.058423</td>\n",
       "      <td>0.089106</td>\n",
       "      <td>0.077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043567</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.042</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043889</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.040</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.050510</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.049</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  Logit_prob  Tree_prob  Clf_prob  \n",
       "0                0    0.045679   0.041629     0.032  \n",
       "1                0    0.121231   0.102396     0.099  \n",
       "2                0    0.054257   0.041629     0.044  \n",
       "3                0    0.053202   0.041629     0.051  \n",
       "4                2    0.058431   0.068542     0.104  \n",
       "5                1    0.053664   0.047680     0.046  \n",
       "6                0    0.058423   0.089106     0.077  \n",
       "7                0    0.043567   0.041629     0.042  \n",
       "8                0    0.043889   0.047680     0.040  \n",
       "9                0    0.050510   0.068542     0.049  "
      ]
     },
     "execution_count": 176,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "id": "f739fbf0",
   "metadata": {},
   "outputs": [],
   "source": [
    "#随机森林\n",
    "Predict_proba = forest.predict_proba(X1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "id": "256b5ad6",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test[\"Forest_prob\"] = Predict_proba[:,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "id": "0e9514b8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.96719674, 0.03280326],\n",
       "       [1.        , 0.        ],\n",
       "       [0.98963009, 0.01036991],\n",
       "       [1.        , 0.        ],\n",
       "       [0.9       , 0.1       ],\n",
       "       [1.        , 0.        ],\n",
       "       [1.        , 0.        ],\n",
       "       [0.96004151, 0.03995849],\n",
       "       [0.95346438, 0.04653562],\n",
       "       [1.        , 0.        ]])"
      ]
     },
     "execution_count": 179,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Predict_proba[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "id": "3eb0df84",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "      <th>Logit_prob</th>\n",
       "      <th>Tree_prob</th>\n",
       "      <th>Clf_prob</th>\n",
       "      <th>Forest_prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.045679</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.032</td>\n",
       "      <td>0.032803</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.121231</td>\n",
       "      <td>0.102396</td>\n",
       "      <td>0.099</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.054257</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.044</td>\n",
       "      <td>0.010370</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.053202</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.051</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.058431</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.104</td>\n",
       "      <td>0.100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.053664</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.046</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.058423</td>\n",
       "      <td>0.089106</td>\n",
       "      <td>0.077</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043567</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.042</td>\n",
       "      <td>0.039958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043889</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.040</td>\n",
       "      <td>0.046536</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.050510</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.049</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  Logit_prob  Tree_prob  Clf_prob  Forest_prob  \n",
       "0                0    0.045679   0.041629     0.032     0.032803  \n",
       "1                0    0.121231   0.102396     0.099     0.000000  \n",
       "2                0    0.054257   0.041629     0.044     0.010370  \n",
       "3                0    0.053202   0.041629     0.051     0.000000  \n",
       "4                2    0.058431   0.068542     0.104     0.100000  \n",
       "5                1    0.053664   0.047680     0.046     0.000000  \n",
       "6                0    0.058423   0.089106     0.077     0.000000  \n",
       "7                0    0.043567   0.041629     0.042     0.039958  \n",
       "8                0    0.043889   0.047680     0.040     0.046536  \n",
       "9                0    0.050510   0.068542     0.049     0.000000  "
      ]
     },
     "execution_count": 180,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "id": "a06fd2fb",
   "metadata": {},
   "outputs": [],
   "source": [
    "#梯度提升回归树\n",
    "Predict_proba = gbrt.predict_proba(X1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "id": "18a52e04",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test[\"Gbrt_prob\"] = Predict_proba[:,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "id": "15b606af",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.96338469, 0.03661531],\n",
       "       [0.89053731, 0.10946269],\n",
       "       [0.95615727, 0.04384273],\n",
       "       [0.95615727, 0.04384273],\n",
       "       [0.92325522, 0.07674478],\n",
       "       [0.95456509, 0.04543491],\n",
       "       [0.92597124, 0.07402876],\n",
       "       [0.96209947, 0.03790053],\n",
       "       [0.95641878, 0.04358122],\n",
       "       [0.94607038, 0.05392962]])"
      ]
     },
     "execution_count": 184,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Predict_proba[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "id": "4c0b8ba3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "      <th>Logit_prob</th>\n",
       "      <th>Tree_prob</th>\n",
       "      <th>Clf_prob</th>\n",
       "      <th>Forest_prob</th>\n",
       "      <th>Gbrt_prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.045679</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.032</td>\n",
       "      <td>0.032803</td>\n",
       "      <td>0.036615</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.121231</td>\n",
       "      <td>0.102396</td>\n",
       "      <td>0.099</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.109463</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.054257</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.044</td>\n",
       "      <td>0.010370</td>\n",
       "      <td>0.043843</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.053202</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.051</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.043843</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.058431</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.104</td>\n",
       "      <td>0.100000</td>\n",
       "      <td>0.076745</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.053664</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.046</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.045435</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.058423</td>\n",
       "      <td>0.089106</td>\n",
       "      <td>0.077</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.074029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043567</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.042</td>\n",
       "      <td>0.039958</td>\n",
       "      <td>0.037901</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043889</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.040</td>\n",
       "      <td>0.046536</td>\n",
       "      <td>0.043581</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.050510</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.049</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.053930</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  Logit_prob  Tree_prob  Clf_prob  Forest_prob  Gbrt_prob  \n",
       "0                0    0.045679   0.041629     0.032     0.032803   0.036615  \n",
       "1                0    0.121231   0.102396     0.099     0.000000   0.109463  \n",
       "2                0    0.054257   0.041629     0.044     0.010370   0.043843  \n",
       "3                0    0.053202   0.041629     0.051     0.000000   0.043843  \n",
       "4                2    0.058431   0.068542     0.104     0.100000   0.076745  \n",
       "5                1    0.053664   0.047680     0.046     0.000000   0.045435  \n",
       "6                0    0.058423   0.089106     0.077     0.000000   0.074029  \n",
       "7                0    0.043567   0.041629     0.042     0.039958   0.037901  \n",
       "8                0    0.043889   0.047680     0.040     0.046536   0.043581  \n",
       "9                0    0.050510   0.068542     0.049     0.000000   0.053930  "
      ]
     },
     "execution_count": 185,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "id": "6dbb18b9",
   "metadata": {},
   "outputs": [],
   "source": [
    "#多层感知机\n",
    "Predict_proba = mlp.predict_proba(X1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 191,
   "id": "dae2cade",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test[\"mlp_prob\"] = Predict_proba[:,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 192,
   "id": "9f6e2a40",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.96073845, 0.03926155],\n",
       "       [0.8990061 , 0.1009939 ],\n",
       "       [0.95055532, 0.04944468],\n",
       "       [0.94632237, 0.05367763],\n",
       "       [0.93508315, 0.06491685],\n",
       "       [0.95047923, 0.04952077],\n",
       "       [0.92203839, 0.07796161],\n",
       "       [0.95544883, 0.04455117],\n",
       "       [0.9557262 , 0.0442738 ],\n",
       "       [0.94206137, 0.05793863]])"
      ]
     },
     "execution_count": 192,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Predict_proba[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 193,
   "id": "b993ab42",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "      <th>Logit_prob</th>\n",
       "      <th>Tree_prob</th>\n",
       "      <th>Clf_prob</th>\n",
       "      <th>Forest_prob</th>\n",
       "      <th>Gbrt_prob</th>\n",
       "      <th>mlp_prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.045679</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.032</td>\n",
       "      <td>0.032803</td>\n",
       "      <td>0.036615</td>\n",
       "      <td>0.039262</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.121231</td>\n",
       "      <td>0.102396</td>\n",
       "      <td>0.099</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.109463</td>\n",
       "      <td>0.100994</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.054257</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.044</td>\n",
       "      <td>0.010370</td>\n",
       "      <td>0.043843</td>\n",
       "      <td>0.049445</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.053202</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.051</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.043843</td>\n",
       "      <td>0.053678</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.058431</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.104</td>\n",
       "      <td>0.100000</td>\n",
       "      <td>0.076745</td>\n",
       "      <td>0.064917</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.053664</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.046</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.045435</td>\n",
       "      <td>0.049521</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.058423</td>\n",
       "      <td>0.089106</td>\n",
       "      <td>0.077</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.074029</td>\n",
       "      <td>0.077962</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043567</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.042</td>\n",
       "      <td>0.039958</td>\n",
       "      <td>0.037901</td>\n",
       "      <td>0.044551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043889</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.040</td>\n",
       "      <td>0.046536</td>\n",
       "      <td>0.043581</td>\n",
       "      <td>0.044274</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.050510</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.049</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.053930</td>\n",
       "      <td>0.057939</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  Logit_prob  Tree_prob  Clf_prob  Forest_prob  Gbrt_prob  \\\n",
       "0                0    0.045679   0.041629     0.032     0.032803   0.036615   \n",
       "1                0    0.121231   0.102396     0.099     0.000000   0.109463   \n",
       "2                0    0.054257   0.041629     0.044     0.010370   0.043843   \n",
       "3                0    0.053202   0.041629     0.051     0.000000   0.043843   \n",
       "4                2    0.058431   0.068542     0.104     0.100000   0.076745   \n",
       "5                1    0.053664   0.047680     0.046     0.000000   0.045435   \n",
       "6                0    0.058423   0.089106     0.077     0.000000   0.074029   \n",
       "7                0    0.043567   0.041629     0.042     0.039958   0.037901   \n",
       "8                0    0.043889   0.047680     0.040     0.046536   0.043581   \n",
       "9                0    0.050510   0.068542     0.049     0.000000   0.053930   \n",
       "\n",
       "   mlp_prob  \n",
       "0  0.039262  \n",
       "1  0.100994  \n",
       "2  0.049445  \n",
       "3  0.053678  \n",
       "4  0.064917  \n",
       "5  0.049521  \n",
       "6  0.077962  \n",
       "7  0.044551  \n",
       "8  0.044274  \n",
       "9  0.057939  "
      ]
     },
     "execution_count": 193,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "id": "4927c70c",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\DELL\\AppData\\Local\\Temp\\ipykernel_5340\\1587306718.py:4: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  res.rename(columns={\"mlp_prob\":\"prob\"},inplace=True)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   user_id  merchant_id      prob\n",
      "0   163968         4605  0.039262\n",
      "1   360576         1581  0.100994\n",
      "2    98688         1964  0.049445\n",
      "3    98688         3645  0.053678\n",
      "4   295296         3361  0.064917\n",
      "5    33408           98  0.049521\n",
      "6   230016         1742  0.077962\n",
      "7   164736          598  0.044551\n",
      "8   164736         1963  0.044274\n",
      "9   164736         2634  0.057939\n"
     ]
    }
   ],
   "source": [
    "#结果保存\n",
    "choose = [\"user_id\",\"merchant_id\",\"mlp_prob\"]\n",
    "res = df_test[choose]\n",
    "res.rename(columns={\"mlp_prob\":\"prob\"},inplace=True)\n",
    "print(res.head(10))\n",
    "res.to_csv(path_or_buf = \"prediction.csv\",index = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ba61a3e9",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
